现在的Distro协议只是服务名称的hashcode值模int32最大正整数再模可用节点数,某个节点出现问题或需要运维重启时,剩下的节点都需要重新排定负责的节点。 采用一致性hash不仅可以减少节点重启导致的波动,而且节点前面的负载均衡可以配置同样的一致性hash算法将注册实例的心跳发给负责处理的节点,尽可能地减少节点之间的转发操作。
Q
[alibaba/nacos]建议Distro增加一致性hash选项
7
A
回答
1
distro hash 抖动的问题是 1.x 的老问题了,上2.x的版本之后,建立长连接的节点就是责任节点,就没有这个问题了。
3
我们要用nacos sync做多机房实例同步,用不了2.0,因为2.0目前的机制和nacos sync不兼容。如果自己定制的版本还有问题,就打算换软件了。
5
去年我问过这个问题,nacos官方回应短期内不会考虑。
如果你们可以实现一致性hash方案,能否提个PR?
9
nacos sync 是 2.0客户端不能用,不是服务端不能用,就不能自己试下吗?
4
即使把服务端替换成nacos 2.x 也解决不了hash抖动的问题,因为只要客户端是1.x版本的,对于服务端来说,无非就是distroTag是ServiceName还是IpPort的问题,hash抖动依然存在。
9
https://blog.csdn.net/github_28583061/article/details/106384335 pr不打算提了,因为我们的方案是结合前端负载均衡一起做一致性hash,并不通用
8
我们的解决方案是nacosSync用nacos client 2.x注册持久化实例,不维持心跳 ,绕开这个问题。nacosSync本身也维持不了过多的心跳,当同步的实例数多了后就要考虑分片。所以采用注册持久化实例的方式