首页 > 解决方案 > Cassandra读一致性是一个,但是节点连接到另一个节点

问题描述

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

但是当我使用'tracing on'检查我的查询是如何运行的时,它显示它也连接到node-2,根据我的理解,这不是必需的。

我在这里错过了什么吗?提前致谢。

编辑::

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

标签: cassandracassandra-3.0cassandra-2.0cqlshcassandra-2.1

解决方案


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

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

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

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

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


推荐阅读