Redis Consensus protocol: Raft
本章对Redis的"consensus protocol"进行讨论。
在阅读Redis源码解析:27集群(三)主从复制、故障转移的时候,其中提及:
理解Redis集群中的故障转移,必须要理解纪元(epoch)在分布式Redis集群中的作用,Redis集群使用RAFT算法中类似term的概念,在Redis集群中这被称之为纪元(epoch)。纪元的概念在介绍哨兵时已经介绍过了,在Redis集群中,纪元的概念和作用与哨兵中的纪元类似。Redis集群中的纪元主要是两种:currentEpoch和configEpoch。
上面提到了redis哨兵,redis哨兵的文档在Redis Sentinel Documentation中介绍,其中的确有epoch的概念,并且redis哨兵所实现的high availability,其实是依赖于故障转移功能的,而redis cluster也能够提供故障转移(failover)功能,并且它的实现也借鉴了redis sentinel的实现,这说明redis cluster集成了redis sentinel的部分功能,并且实现上也是借鉴的redis sentinel;
阅读gqtc 的redis系列博客中,关于sentinel的文章,我能够从中看到一些redis cluster实现中同样使用的技术:
sentinel | cluster |
---|---|
Redis源码解析:21sentinel(二)定期发送消息、检测主观下线 | Redis源码解析:25集群(一)握手、心跳消息以及下线检测 |
Redis源码解析:22sentinel(三)客观下线以及故障转移之选举领导节点 | Redis源码解析:27集群(三)主从复制、故障转移 |
Redis源码解析:23sentinel(四)故障转移流程 |
其实现在想想本质上redis sentinel和redis cluster都是distribution system,并且它们需要实现的功能是存在一定的重复的,所以实现上的重复是非常正常的;
TODO
redis集群实现(五) sentinel的架构与raft协议
这篇文章收录了