`

Redis Sentinel

 
阅读更多

Redis Sentinel 是 redis的高可用实现方案:故障发现、故障自动转移、配置中心、客户端通知,Jedis原生支持,客户端在连接时,实际连接的Sentinel集合,当Sentinel观测到变化和故障转移后,会Pub到client端,实际使用了redis的pub/sub功能。

 

参考自

https://cloud.tencent.com/developer/article/1021467

 

采用了Raft算法,和ZAB类似,都是简化版的Paxos实现

 

前提:

1. 默认情况下,sentinel都是Follower状态

2. 当Follower判断某个master客观下线,会发起选sentinel-Leader选举

 

过程中保证:

1. 每次发起投票,epoch都会加1

2. 每轮(epoch用来标识一轮投票,也叫term任期)每个sentinel只会投一次票

3. sentinel都会优先投自己

4. 每轮投票都有超时时间,超时时间内未选出Leader,会开启下一轮

5. 超过半数投票或者投票超过配置,则选出LeaderLeader去完成故障转移

 

选举算法效率:

1. 率先完成客观下线判断的sentinel,优先开始选举

2. 每个sentinel每轮仅仅投票一次

以上两点基本可以保证一轮就可以选出Leader,因为率先发起的节点会大概率当选Leader

 

 

故障转移:

1. 选取最靠谱,数据最新的slave做master;至少考虑 slave心跳是否正常、slave当前的同步偏移量offset(越大表明数据越新)

2. slave当选为新master后,其他slave挂载到它下面

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics