[alibaba/nacos]建议Distro增加一致性hash选项

2023-12-21 681 views
7

现在的Distro协议只是服务名称的hashcode值模int32最大正整数再模可用节点数,某个节点出现问题或需要运维重启时,剩下的节点都需要重新排定负责的节点。 采用一致性hash不仅可以减少节点重启导致的波动,而且节点前面的负载均衡可以配置同样的一致性hash算法将注册实例的心跳发给负责处理的节点,尽可能地减少节点之间的转发操作。

回答

4

distro hash 抖动的问题是 1.x 的老问题了,上2.x的版本之后,建立长连接的节点就是责任节点,就没有这个问题了。

4

我们要用nacos sync做多机房实例同步,用不了2.0,因为2.0目前的机制和nacos sync不兼容。如果自己定制的版本还有问题,就打算换软件了。

4

image 去年我问过这个问题,nacos官方回应短期内不会考虑。

如果你们可以实现一致性hash方案,能否提个PR?

0

nacos sync 是 2.0客户端不能用,不是服务端不能用,就不能自己试下吗?

2

即使把服务端替换成nacos 2.x 也解决不了hash抖动的问题,因为只要客户端是1.x版本的,对于服务端来说,无非就是distroTag是ServiceName还是IpPort的问题,hash抖动依然存在。

0

我们的解决方案是nacosSync用nacos client 2.x注册持久化实例,不维持心跳 ,绕开这个问题。nacosSync本身也维持不了过多的心跳,当同步的实例数多了后就要考虑分片。所以采用注册持久化实例的方式