一致性哈希的多米诺骨牌效应

4
我正在尝试弄清楚像Cassandra这样使用一致性哈希的系统如何处理级联节点故障。我知道有虚拟节点的概念,键被映射到虚拟节点。虚拟节点又被映射到实际物理节点,其思想是每个物理节点都获得相等份额的键空间。我的问题是:当一个物理节点宕机时会发生什么?所有在此物理节点上的虚拟节点都需要移动到另一个物理节点上。这不会导致一个多米诺骨牌效应,从而可能使群集中其他节点过载吗?现实生活中的系统如何处理这种情况?
1个回答

1
当节点宕机时,令牌范围不会自动移动。如果节点完全宕机,则应通过删除节点或将其暗杀来手动触发令牌范围重新平衡。
当负责某些令牌范围的节点正在关闭时,其副本继续提供流量服务。

嘿,亚历克斯,我不是原始发帖人,但对相关主题很感兴趣; 3个节点,RF1,每个节点33% - 其中一个节点已经失效(我们无法恢复它)- 当我们从环中删除已丢失的节点时 - 它是否会重新分配其余66%作为50%/ 50%的两个节点的100%,并且我们将失去33%的数据对吗? - Ersoy
1
如果您的RF=1,则数据将完全丢失... 如果您的RF>1,则剩下的副本将成为创建其他副本的源。 - Alex Ott
谢谢Alex - 但这样做会导致副本现在服务更多的流量,可能导致它失败等等..?也许我们可以通过仔细规划来解决这个问题? - frodo
1
是的,您需要调整集群大小以处理失败的副本等情况。流量总是会有波动,集群应该能够处理正常流量的+20-30%。我建议使用NoSQLBench工具进行此类调整大小练习。 - Alex Ott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接