不使用分片集群,仅使用主从复制和哨兵模式下,可以有多个主从集群,但每个主从集群一般只有一个活跃的主节点并执行写操作,每个主从集群的数据也可能(应该)是不同的,同时每个主从集群存储的数据没有关联性,业务可能也不同,所以当高并发写发生时,巨大的写压力也只会到达一个主从集群。
如果仅仅是对主从集群的主节点进行拓展呢?
那么仅在主从复制和哨兵模式下,两个主节点是否也要进行数据同步呢?如果是直接单纯扩充主节点感觉更像是人为的实现脑裂,且客户端该访问哪一个主节点呢?
分片机制如何解决高并发写问题?
分片机制特点:
多个master节点,master节点存储不同数据,
一个master仍有多个slave节点保证高性能和高可用,
master节点互通,或者说整个集群构成一个网络,
master节点间通过ping确定健康状态。
多个master节点既扩充了master的数量,同时可以将不同数据分配给不同master处理,提高了写操作的处理能力,同时整个集群构成一个网络,对任何数据的访问都会被路由到正确的节点,打破了主从复制和哨兵模式下不同master节点(主从集群)数据的隔离性。所以我认为分片集群相较于主从复制+哨兵模式,能够处理高并发写最重要的一点不是增加了master节点数量而是使打破数据隔离,构成集群,单纯的增加master没有作用,解决不了高并发写问题。