Redis Sentinel的客户端实现原理
客户端连接Sentinel集群,只需要两个参数:
- Sentinel的节点集合。
- master-name。
实现一个Redis Sentinel客户端的步骤如下:
第一步:遍历Sentinel节点集合,获取一个可用的Sentinel节点。
第二步:通过sentinel get-master-addr-by-name master-name这个API获取对应主节点相关信息。
第三步:验证当前获取的主节点是真正的主节点,防止期间发生了故障转移。
第四步:保持和Sentinel节点集合的联系,时刻获取主节点的相关信息。
为每一个Sentinel节点单独启动一个线程,利用Redis的发布订阅功能,每个线程订阅Sentinel节点上切换master的相关频道+switch-master。
Sentinel节点的+switch-master频道,它就是Redis Sentinel在结束对主节点故障转移后发布切换主节点的消息。
Sentinel节点基本将故障转移的各个阶段发生的行为都通过这种发布订阅的形式对外提供。