gpt4 book ai didi

cassandra - #Cassandra - nodetool removenode 、退役、暗杀、替换之间有什么区别?

转载 作者:行者123 更新时间:2023-12-02 23:32:07 26 4
gpt4 key购买 nike

为了删除节点(工作/非工作),哪个命令适用于哪种情况?

最佳答案

停用来自离开节点的流数据。因此,可以保证您保持与开始操作时相同的一致性。

Removenode 从拥有该范围的任何可用节点流式传输数据。您可能会违反一致性(甚至可能丢失数据),具体取决于修复后的时间以及用于写入数据的一致性级别。

通常,如果可能的话,您应该更愿意停用。想象一下,您有 5 个节点集群 (A-E),给定的写入将转到 B、C 和 D。您使用仲裁进行写入,因此由于某种原因 C 已关闭,但写入会转到 B 和 D。当 C 回来时在线,D 需要从集群中删除(您正在缩小规模,或更改驱动器,或其他什么)。

  • 如果 D 在线,则运行停用,D 将其数据发送到 E - 您保留所有数据的 2 个副本,并且稍后可以运行修复以写入 C。

  • 如果 D 处于脱机状态,或者如果您运行removenode 而不是停用,则可以从 C 而不是 D 进行流式传输。在这种情况下,您现在有 2 个缺少数据的副本(C 和 E)。如果您以法定人数读取,您现在可能会点击 C 和 E 而不是 B,并得到缺少数据的结果。修复可能会解决这个问题,只要你原来的写入去了多个节点,但如果你原来的写入只去了一个节点,你实际上可能会丢失数据。

Assassinate 是一个很少使用的工具,只能用作强制节点退出集群的工具。不执行流传输。数据丢失的可能性明显更高,特别是当您使用 RF < 3 并使用 CL < ALL 写入时。

关于cassandra - #Cassandra - nodetool removenode 、退役、暗杀、替换之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com