redis的两种持久化方案:从应用到底层 36张图带你进入Redis世界
redis的两种持久化方案:从应用到底层 36张图带你进入Redis世界从应用到底层:36张图带你进入Redis世界(下)
脑裂是指因为网络原因,导致master节点、slave节点 和 sentinel集群处于不用的网络分区,此时因为sentinel集群无法感知到master的存在,所以将slave节点提升为master节点 此时存在两个不同的master节点就像一个大脑分裂成了两个。其实在Hadoop 、Spark集群中都会出现这样的情况,只是解决方法不同而已(用ZK配合强制杀死)。
集群脑裂问题中,如果客户端还在基于原来的master节点继续写入数据那么新的master节点将无法同步这些数据,当网络问题解决后sentinel集群将原先的master节点降为slave节点,此时再从新的master中同步数据将造成大量的数据丢失。
Redis处理方案是redis的配置文件中存在两个参数
min-replicas-to-write3表示连接到master的最少slave数量
min-replicas-max-lag10表示slave连接到master的最大延迟时间
如果连接到master的slave数量 < 第一个参数 且 ping的延迟时间 <= 第二个参数那么master就会拒绝写请求,配置了这两个参数后如果发生了集群脑裂则原先的master节点接收到客户端的写入请求会拒绝就可以减少数据同步之后的数据丢失。
从应用到底层:36张图带你进入Redis世界(下)