8-7/8 java/redis 客服端

8-7/8 java/redis 客服端

8-7/8 java/redis 客服端

 

如何通过正确的方式使用客户端连接redis-sentinel。使用redis-sentinel保证服务端高可用。如果服务端挂掉了,可以完成故障转移,对于client感知不到是没有作用的,加入原来连接是master地址,master挂掉了。不会把新的地址告诉我

直接连接master可以么?需要server高可用和client

8-7/8 java/redis 客服端

8-7/8 java/redis 客服端

首先获取所有sentinel节点,因为client不知道哪一个是active的,哪些是连接不上的,client获得sentinel集合+mastername

8-7/8 java/redis 客服端

在sentinel-k节点执行sentinel api get-master-addr-by-name masterName,sentinel-k返回master节点ip port

8-7/8 java/redis 客服端

当client获取到master节点的时候,进行一次验证。check是不是master节点

8-7/8 java/redis 客服端

master的变化sentinel是感知的,因为所有故障发现故障转移是sentinel做的

client与sentinel采用pub/sub模式,client订阅sentinel的某一个频道,这个频道有谁是master的变化。假如有master变化,在这个频道会publish一条消息,sentinel通过订阅可以获取,在进行新master进行连接

在master节点没有修改的情况下,client连接master不经过sentinel

8-7/8 java/redis 客服端

8-7/8 java/redis 客服端

8-7/8 java/redis 客服端