Welcome everyone

从不同角度看读写分离

java 汪明鑫 482浏览 0评论

从数据库主从角度

一般业内的数据集群规模都是一主多从

主提供写操作支持,从通过消费binlog转为relay log 同步数据

如果只有一个主,又要扛读流量,又要扛写流量,压力比较大

如果有多个主同时对外提供写的话,会有数据不一致的问题,需要有额外的逻辑去处理数据同步的问题

除非向redis那样分片路由,多个分片提供读写。

 

一般Mysql数据库的拓扑都是一主多从。

我们可以业务代码中指定读从库

Mysql读写分离还会引入一个问题,那就是主从延迟

所以也不要一股脑读从,也要根据业务场景选择读主还是读从

 

 

从主表读表角度

这个是啥意思呢?

就是说业务流量落主表后,核心逻辑都是以主表来做的。

我们异步的去落一个表,这个表只用来读,举个例子比如说用户查看今天下了多少订单,就读读表,

那订单的履约和状态的流转推进等核心逻辑就基于主表。

 

 

从写持久化读缓存角度

写操作需要持久到磁盘,落db

那我们的读逻辑没必要没有必要抵达db

可以在db上层包memcached,memcached上面包本地缓存

那么读流量都读上层的缓存,扛住高并发读,减少了db的压力

 

 

从CQRS角度

CQRS 是读写分离架构

 

写流量流经domain领域层

读流量直接抵达inf持久层

 

 

转载请注明:汪明鑫的个人博客 » 从不同角度看读写分离

喜欢 (6)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz