为什么不将每个节点都设为种子节点

时间:2014-03-21 20:48:30

标签: cassandra

我是卡桑德拉的新手。我理解种子节点的目的。但是种子节点是否有任何成本?如果是这样,他们是什么。否则,我想知道为什么不将每个节点都设为种子节点?

1 个答案:

答案 0 :(得分:16)

除了您可能会收到比非种子节点更多的八卦流量之外,基本上没有与种子相关联的本地运行时成本。然而,随着种子数量的增加,这种局部效应将逐渐变得不那么明显。

更有趣的是分布式效果。种子节点有利于闲聊,这意味着如果只有少数种子节点,更新将集中在少数种子中。非种子节点将尝试向种子发送八卦更新(从种子列表中随机挑选),因此如果每个人都向相同的几个节点发送更新,则它们必然具有最新的群集元数据。同时,闲聊还涉及从种子接收元数据,这意味着每个闲聊少数种子节点的人也将受益于最新的更新。最终结果是在整个集群中相对快速地传播更新,代价是将一些闲聊流量集中在较少的节点上。

将其与每个节点都是种子的情况进行比较。当一些节点闲聊时,它基本上会与集群中的另一个随机节点进行通信,这与群集的其余部分没有任何可能性。因此,我们的第一个节点刚刚发送到“种子”的更新不会特别快速地传播。此外,由于种子没有收到更大比例的所有八卦更新,它能够发送回我们节点的信息也不是特别是最新的(实际上两个节点都有大致相同的不知道概率)关于集群中的一些断开连接的更新)。所以我们得到了完全的分散化,但完全随机的更新传播。

实际上,如果你有大量的种子,你可能会受到拍打,重影和其他与旧拓扑信息相关的奇怪行为持续时间超过应有的时间。