Redis集群理解以及Tendis的优化-哨兵模式

时间:2025-02-03 13:07:01

故障恢复过程:
1. Raft选举主sentinel(选举后则一直存在,除非下线):如果被PING的数据库或者节点超时未回复,哨兵认为其主观下线。如果下线的是master,哨兵会向其它哨兵发送命令询问它们是否也认为该master主观下线,如果达到一定数目(即配置文件中的quorum)投票,哨兵会认为该master已经客观下线
2. 主sentinel来选择优先级最高的slave升为master

哨兵的主要问题还是由于中心架构,仅存在一个master节点引起的,因为主从,只能主节点进行写。

脑裂:比如一个主节点和其他所有的sentiel极其从节点隔离,主节点继续接受请求,而另一片区域会出现新的主节点。。
1. 问题1:当网络解决后,原主节点会变成slave,但是在同步之前会清空自己的数据,导致数据丢失,
2. 问题2:两个分区的数据不一致
脑裂的解决:设置最少slave存活数和主从复制的超时时间,如果存活数量太少或者超时,主节点禁止写操作,比如可以设置过半存活就可以避免脑裂,但是不能完美解决,大概是原主成为的slave的时候会丢失数据