Lettuce拓扑刷新问题
@ankeway 你好,想跟你请教个问题:
大神,可否帮我分析一下
我同时开启了lettuce的拓扑周期刷新和自适应刷新,发现虽然当某个master节点宕机后,客户端保存的集群拓扑信息能刷新,后台对redis的操作也正常,但是,发现lettuce还是一直在重连宕机的master,后台还是一直在刷无法重连的警告日志。
而我使用jedis测试时,基本上是无感操作,只要redis集群可用,jedis基本上不会有任何错误日志。相比而言,jedis比lettuce似乎处理的更好。
还有我想问下,lettuce的周期刷新和自适应刷新是否需要同时开启,或者只开启自适应刷新就够了。
开启周期刷新,虽然能保证客户端存储的拓扑信息是最新的,但是,是否有必要额外的开一个定时器去一直刷新,毕竟,redis拓扑信息发生改变时只在出错的时候或其他少数情况,在大多数情况下,频繁的刷新也是无意义的。
我也想过两种策略同时开启,只不过调慢周期刷新的时间,但是,这样做的意义似乎不大,毕竟如果需要保证客户端存储的信息是最新的,那么刷新间隔就不能太大,太短的话,也是对资源的一种消耗
求大神帮我分析一下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
嗯嗯,多谢!
回复
@雪初寒 : 看过源码,开启自适应刷新就够了,只有用到ReadFrom.NEAREST模式的时候开启定时刷新,Lettuce会选择延迟最低的节点读取
首先我觉得你可以看你是否对这种感知比较敏感,如果影响不大,完全不用考虑,而且用jedis即可,既然使用到了Redis集群,应该对这块感知比较敏感,也希望能够尽快恢复使用,而且没有放弃lettuce,那么一个定时器的资源消耗,也就不用纠结了,报错也是正常的,节点没有恢复,会有报错的,Cluster各节点探测挂掉节点的时间大概是15秒默认时间,所以至少要有15秒的Redis处于不可用状态,再加上刷新时间的差值,能够快速恢复客户端的使用这样的配置还是很值得的