【问题标题】:Data Partitioning in CassandraCassandra 中的数据分区
【发布时间】:2018-05-15 04:47:48
【问题描述】:

两个问题,

假设我有三个 cassandra 节点/环境设置,节点 1、节点 2 和节点 3。

我在哪里指定了标记

Node 1 as 1 to 60, Node 2 as 61 to 120, Node 3 as 121 to 255.

1) 根据 Cassandra 文档,对于匹配 1 到 60 的分区键,它应该在 Node 1 中,但在复制期间,此分区数据 1 到 60 会复制到 Node 2 和节点 3。那么为什么我们需要在其中进行分区分离呢?在这种情况下,从哪个节点读取此分区数据?

下一个问题, 2)如果一个节点宕机了,Cassandra节点之间是否会发生RE-PARTITIONING?

【问题讨论】:

    标签: java cassandra cassandra-3.0


    【解决方案1】:

    1) 由于节点数=复制因子,因此令牌不会那么重要。根据客户端中的平衡策略,令牌对于哪个节点获取请求可能很重要,例如令牌感知策略。

    2) 仅在扩展集群时才会分配令牌范围。

    【讨论】:

    • 假设我们在三个节点中有数据——节点 1(主数据)、节点 2 和节点 3(复制数据)。如果我的读取一致性为“1”,读取发生在哪个节点?
    • 取决于您使用的平衡策略。 docs.datastax.com/en/developer/java-driver/3.1/manual/…
    • 我对 vNodes 很困惑,在 vNodes 之前,我可以理解 initial_token 持有的值,比如从 1 到 25 的令牌可以驻留在节点 1 中,而 26 到 50 可以驻留在节点 2 中,在此博客中,它提到vNodes做自动分区,这是什么意思? datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2
    • 我的意思是打开一个问题,在集群中添加节点和删除节点的情况下它是如何工作的?
    • 2 个快速问题刚刚变成了一篇论文... :) 无论如何,分区键被散列以给出带有 murmur3 的令牌值。拥有令牌的节点主要负责该数据 - 建立数据局部性。副本节点具有副本 - 建立了冗余和可用性。也没有单点故障。没有主从。写入同时发送到所有副本。如果您还有其他问题,请发布另一个问题以帮助未来的搜索者。
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多