gpt4 book ai didi

java - 关于 Cassandra Bootstrap 的问题

转载 作者:行者123 更新时间:2023-12-01 20:05:02 25 4
gpt4 key购买 nike

有人可以回答我的以下问题吗

1) 我有 4 个节点 172.30.56.60、172.30.56.61、172.30.56.62、172.30.56.63,并且我还在所有四个节点的 cassandra.yaml 中将种子配置为“172.30.56.60、172.30.56.61”节点。注意:我没有在 cassandra.yaml 文件中提供有关“172.30.56.62、172.30.56.63”的任何信息。但是当我在所有四个节点中启动Cassandra时,Cassandra如何能够识别62和63?

2) gossip 协议(protocol)到底如何工作/Cassandra bootstrap 到底如何工作?

谢谢,
哈利

最佳答案

(免责声明:我是 Scylla 员工)

当您在节点上启动 Cassandra/Scylla 时,它们会联系种子节点(您在 yaml 文件中为所有 4 个节点定义的节点)以获取有关环、 token 范围和环中其他成员的信息(其他节点)。

Bootstrap 控制当插入新节点时集群中数据自动重新分配的能力。新加入集群的节点被定义为一个没有系统表或数据的空节点。

  • 联系种子节点以了解八卦状态。
  • 转换到 Up and Joining 状态(表明它正在加入簇;由 nodetool status 中的 UJ 表示)。
  • 联系种子节点以确保架构一致。
  • 计算它将负责的代币。
  • 流式传输与其负责的 token 关联的副本数据来自前任所有者。
  • 流式传输完成后转换到正常状态(以表明它现在是集群的一部分;由 UN 表示nodetool状态)。

您可以在此处阅读有关引导的更多信息:http://thelastpickle.com/blog/2017/05/23/auto-bootstrapping-part1.html

八卦协议(protocol)确保系统中的每个节点最终都知道有关每个其他节点状态的重要信息,包括在发生任何给定状态更改时无法访问或尚未在集群中的节点。Gossip 计时器任务每秒运行一次。在每次运行期间,节点都会根据以下规则启动八卦交换:

  1. 与随机实时端点(如果有)的八卦
  2. 根据不可达节点和 Activity 节点的数量,以一定概率向随机不可达端点发送八卦
  3. 如果在(1)处闲聊的节点不是种子,或者 Activity 节点的数量小于种子数量,则根据不可达节点、种子节点和 Activity 节点的数量,以一定概率闲聊到随机种子。

这些规则确保如果网络正常运行,所有节点最终都会了解所有其他节点。 (显然,如果每个节点只接触一个种子,然后只与它知道的随机节点进行八卦,那么当有多个种子时,您可以进行分区 - 每个种子只会了解集群中节点的子集。步骤 3 避免这个以及更微妙的问题。)

这样,节点每轮都会与一到三个节点发起八卦交换(如果集群中单独存在,则为零)

您可以在此处阅读有关八卦高级架构的更多信息:https://wiki.apache.org/cassandra/ArchitectureGossip

您可以在此处阅读有关 Scylla gossip 实现的更多信息: https://github.com/scylladb/scylla/wiki/Gossip

关于java - 关于 Cassandra Bootstrap 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47567801/

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