jedis 客户端 集群模式执行流程源码分析

jedis 客户端 集群模式执行流程源码分析

流程

一.初始化流程

  1. 构建jedisCluster,调用父类BinaryJedisCluster构造器
  2. BinaryJedisCluster构造器中,构建JedisSlotBasedConnectionHandler
  3. JedisSlotBasedConnectionHandler构建JedisClusterInfoCache(存储集群的slots信息)
  4. 调用JedisClusterConnectionHandler的initializeSlotsCache(),连接集群的一个节点获取集群的slot信息,获取不到,遍历下一个节点,获取到,则break;然后构建一个slot和连接池的对应关系List<Map<slot,pool>;

二.请求流程

  1. 客户端调用hset
  2. 调用JedisClusterCommand.runWithRetries的方法,
  3. 通过key计算slot,从List<Map<slot,pool>;获取对应的链接池
  4. 从连接池中获取链接,然后执行,正常流程结束;
  5. 如果获取链接时新建链接时异常,或者拿到一个已经存在的链接,执行时,网络异常了,则会重试,重试次数在初始化jedisCluster时指定,默认5次
  6. 发生异常JedisConnectionException时,则释放链接(其实会关闭),如果重试次数只剩1次了,则会随机遍历集群节点刷新JedisClusterInfoCache(存储集群的slots信息),成功,则再次执行命令

三.技巧

  1. 可以通过减小重试次数,来提高客户端的敏感度,因为在最后一次重试时才会刷新slot信息,如果master飘逸了,可以尽快感知到,否则最迟需要等待2秒*5次=10秒,才能感知到
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值