【问题标题】:Cassandra Vnodes and token RangesCassandra Vnodes 和令牌范围
【发布时间】:2016-06-21 09:31:56
【问题描述】:

我知道 Vnodes 通过在 cassandra.yaml 文件中设置 num_tokens 为每个节点形成许多令牌范围。

例如 (a),我有 6 个节点,每个节点我设置了 num_token=256。这6个节点中形成了多少个虚拟节点,即每个物理节点包含多少个虚拟节点或子令牌范围。

根据我的理解,当每个节点都分配了num_token为256时,这意味着所有6个节点都包含256个vnode。这个说法是真的吗?如果不是,那么 vnodes 如何在每个节点中形成令牌范围(显然是随机的)。如果有人可以用(a)中提到的例子来解释我,那将非常方便。

此 url 中的 Vnode 环表示什么:=> http://docs.datastax.com/en/cassandra/3.x/cassandra/images/arc_vnodes_compare.png(取自:http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    Cassandra 中的每个分区键都使用 MurMur3 哈希函数转换为数字令牌值。令牌范围在 -2^63 到 +2^63 -1 之间 num_token 定义分配给节点的令牌范围。这与签名的 java long 相同。每个节点计算令牌范围内的 256 (num_tokens) 个随机值并通知其他节点它们是什么,因此当一个节点需要协调对特定令牌的请求时,它知道哪些节点负责它,根据复制因子和 DC /机架放置。 对此功能的更好描述是“自动令牌范围分配以获得更好的流媒体功能”,称其为“虚拟”有点令人困惑。 在您的情况下,您有 6 个节点,每个集合有 256 个令牌范围,因此您有 6*256 个令牌范围,每个心理节点包含 256 个令牌范围。

    例如,考虑 2 个节点,其中 num_tokens 设置为 4,令牌范围为 0 到 100。 节点 1 计算令牌 17、35、77、92 节点 2 计算令牌 4、25、68、85 在这种情况下,圆环显示了令牌范围的分布 节点 2 负责令牌范围 4-17、25-35、68-77、85-92,节点 1 负责其余部分。

    【讨论】:

    • 对于 node2 的范围,应该有 4-16, 25-34 68-76 和 85-92 吗?
    • 那是 RF 1 的吧? RF2 和三个节点呢?您需要复制令牌范围。 Random 听起来有点疯狂,因为您无法确保复制令牌范围。或者是隐式统一唯一覆盖的令牌范围,并且复制的处理方式不同?
    • @ConstanceEustace 令牌分配不依赖于 RF。副本放置取决于您的复制策略,在此处阅读更多信息 - docs.datastax.com/en/cassandra/latest/cassandra/architecture/…
    • 如果节点1和节点2生成的token相同怎么办?
    猜你喜欢
    • 1970-01-01
    • 2017-02-14
    • 2016-04-18
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2013-06-09
    相关资源
    最近更新 更多