【问题标题】:Cassandra read consistency is one, but node connects to another nodeCassandra读一致性是一个,但是节点连接到另一个节点
【发布时间】:2020-10-01 22:31:32
【问题描述】:

3 节点集群和 3 的 RF 意味着每个节点都拥有所有数据。一致性是一。 因此,当查询 node-1 上的某些数据时,理想情况下,node-1 拥有所有数据,它应该能够完成我的查询。

但是当我使用“跟踪”检查查询的运行方式时,它显示它也连接到节点 2,根据我的理解,这不是必需的。

我在这里遗漏了什么吗? 提前致谢。

已编辑 ::

添加了output of 'tracing on'。 从图中可以看出,节点10.101.201.3已经联系了10.101.201.4

【问题讨论】:

  • 你能显示跟踪输出吗?
  • @AlexOtt i.stack.imgur.com/fDhRD.png 这是'tracing on'的输出
  • 您是从 cqlsh 还是从应用程序代码运行查询?
  • @Aaron 来自 cqlsh
  • @Aaron 如果我从应用程序代码运行查询,这会改变吗?

标签: cassandra cassandra-3.0 cassandra-2.0 cqlsh cassandra-2.1


【解决方案1】:

3 节点集群和 3 的 RF 意味着每个节点都有所有数据。

仅仅因为每个节点都拥有 100% 的所有数据,并不意味着每个节点都拥有 100% 的所有令牌范围。 3 节点集群中的令牌范围将平均分配 @ ~33%。

简而言之,node-1 可能拥有所有数据,但它主要只负责其中的 33%。当分区键被散列时,查询很可能被定向到node-2,因为它主要负责该分区键......尽管其他节点包含二级和三级副本。

cqlsh。如果我从应用程序代码运行查询,这会改变吗?

是的,因为指定的负载平衡策略(在应用代码中配置)也会影响此行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多