主从同步策略

2020-09-11  本文已影响0人  愤怒的老照

redis

redis因为是要提升性能,所以直接采用的异步复制,当在Master上写入数据后直接返回,然后把数据快照广播给Slave,让所有的Slaves去执行操作。主机宕机后会产生数据丢失的风险

zookeeper

zookeeper同步的方式是zab算法,zab算法是在Paxos的基础上引入了leader的概念,解决了poxas的写操作可以分配到任意一台机器,由于所有机器都可以写,所以写失败也会有很多,花费在io上的事件也就很多的问题。Paxos算法的思想是基于Quorum(法定人数)机制,少数服从多数,对于少数结点的网络异常、宕机、数据不一致,it doesn’t matter,消息尽一切努力送达,数据达到最终一致性,是数据一致性和系统可用性的折中。

kafka

kafka没有采用“少数服从多数”的方法,因为为了容忍1个follower挂掉,必须要有3个以上的replica,如果要容忍2个follower挂掉,必须要有5个以上的replica。也就是说,在生产环境下为了保证较高的容错程度,必须要有大量的replica,而大量的replica又会在大数据量下导致性能的急剧下降。所以这种算法更多的用皂zookeeper折中共享集群配置中,而很少用在需要存储大量的数据的系统中。

kafka采用的是ISR的方式,在zk集群中维护了一个ISR列表,符合以下两点才算是属于ISR列表:

当一个消息生产出来时,只有在ISR中的所有broker都commit后,才会返回commit成功。主机宕机后也只能从ISR列表中选取leader。

mysql

mysql通常采用一主多从的部署方式,

主机宕机后可能发生数据丢失问题,可以采用MySQL的半同步复制,事务在主库写完binlog后需要从库返回一个已接受,才放回给客户端;

https://www.cnblogs.com/bigband/p/13520586.html

上一篇 下一篇

猜你喜欢

热点阅读