首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cassandra如何在添加新节点时确保一致性

Cassandra如何在添加新节点时确保一致性
EN

Stack Overflow用户
提问于 2016-12-21 13:33:56
回答 2查看 354关注 0票数 0

我对cassandra在向集群添加新节点时如何确保一致性感到有点困惑。我知道cassandra将进行范围移动,并将数据流式传输到新添加的节点。问题是,cassandra是否也将辅助副本的数据流式传输到新添加的节点。

例如,我们在集群中有4个节点,RF=3 (A,B,C,D) A(x=1,y=2),B(x=1,y=3),C(x=1),D(y=2)。分区键"x“将由A,B,C持有,而分区键"y”将由D,A,B持有。如果我在A和B之间添加一个新节点A‘,我认为它将流式传输来自A的分区"x“。但是它是否也将流式传输来自B或D的分区"y”?

如果它流分区"y",cassandra会选择从哪个节点流?来自official document的。它将从主副本D进行流式传输。如果是这种情况,当D具有陈旧数据时(在添加新节点之前可以,因为A和B以及满足仲裁的最新数据),在流式传输之后,可以从D和A‘查询出陈旧数据。我说的对吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-22 04:19:15

Cassandra将从放弃令牌所有权的节点流式传输信息

也就是说,在您的示例中: RF=3 (A,B,C,D) A(x=1,y=2),B(x=1,y=3),C(x=1),D(y=2)。如果E加在A之间,B和A将放弃拥有X给E,B将放弃拥有y。然后A将把它的X的值发送给E,B将它的Y的值发送给E-所以最终的结果是A(y=2),E(X=1,y=3),B(x=1),C(x=1),D(y=2)。

请注意,添加后,节点A有一个陈旧的X副本,B有一个陈旧的Y副本,他们应该运行'nodetool cleanup‘来清除它。

票数 1
EN

Stack Overflow用户

发布于 2016-12-21 15:44:27

你可能是对的。建议在添加新节点之前运行nodetool修复,这样集群中不会出现不一致。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41255811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档