深入检出 Redis Sentinel ③:客户端

1. 客户端实现原理

  1. 获取 Sentinel 节点: 遍历所有 Sentinel 节点,获取一个可用的 Sentinel 节点
  2. 获取 master 节点: 执行 sentinel get-master-addr-by-name ${masterName} 命令获取 master 节点
  3. 验证 master 节点: 执行 role 或 role replication 命令获取节点信息进行验证其是否故障
  4. 故障转移通知: 当 redis 主从变化时通知客户端
    1. +switch-master: 切换主节点(从节点晋升主节点)
    2. +convert-to-slave: 切换从节点(主节点降为从节点)
    3. +sdown: 主观下线

2. Jedis

1
2
3
4
5
6
7
8
9
10
11
JedisSentinelPool sentinelPool = new JedisSentinelPool(masterName, sentinelSet, poolConfig, timeout);
Jedis = null;
try {
jedis = new redisSentinelPool.getResource();
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
if (jedis != null) {
jedis.close();
}
}