cassandra - Cassandra读一致性是一个,但是节点连接到另一个节点
问题描述
3 个节点集群和 3 个 RF 意味着每个节点都拥有所有数据。一致性是一。因此,当在 node-1 上查询某些数据时,理想情况下,由于 node-1 拥有它应该能够完成我的查询的所有数据。
但是当我使用'tracing on'检查我的查询是如何运行的时,它显示它也连接到node-2,根据我的理解,这不是必需的。
我在这里错过了什么吗?提前致谢。
编辑::
添加了'tracing on' 的输出。从图中可以看出,节点10.101.201.3已经联系了10.101.201.4
解决方案
3 个节点集群和 3 个 RF 意味着每个节点都拥有所有数据。
仅仅因为每个节点都拥有 100% 的所有数据,并不意味着每个节点都拥有 100% 的所有令牌范围。3 节点集群中的令牌范围将平均分配 @ ~33%。
简而言之,它node-1
可能拥有所有数据,但它只主要负责其中的 33%。当分区键被散列时,查询可能被定向,node-2
因为它主要负责该分区键......尽管其他节点包含二级和三级副本。
qlsh。如果我从应用程序代码运行查询,这会改变吗?
是的,因为指定的负载平衡策略(在应用程序代码中配置)也会影响此行为。