【发布时间】:2020-05-13 17:35:44
【问题描述】:
我是 cassandra 的新手,还没有读完文档。 只想知道我是否从 3 节点集群的一个节点运行 cqlsh 并运行查询 例如
cqlsh node1host -u username -p passwd -k my_cass_keyspace
> select ...
结果是来自所有 3 个节点还是只是来自我运行 cqsh 的节点的结果? 对不起,非常菜鸟的问题。 谢谢。
【问题讨论】:
标签: cassandra
我是 cassandra 的新手,还没有读完文档。 只想知道我是否从 3 节点集群的一个节点运行 cqlsh 并运行查询 例如
cqlsh node1host -u username -p passwd -k my_cass_keyspace
> select ...
结果是来自所有 3 个节点还是只是来自我运行 cqsh 的节点的结果? 对不起,非常菜鸟的问题。 谢谢。
【问题讨论】:
标签: cassandra
一般答案:来自所有节点。
详细回答: 您的节点可能是协调器,然后根据您的复制因子,该节点可能会从其他节点获取数据(例如 RF 1,然后您从另一个节点查询分区)。
这取决于您的复制因素以及您的一致性级别。 您可以在使用 cqlsh 时检查您的一致性(默认为 ONE):
cqlsh> consistency;
Current consistency level is ONE.
您可以通过(例如更改为 QUORUM):
cqlsh> CONSISTENCY QUORUM ;
如果您想了解有关您的请求执行计划的详细信息,请尝试激活跟踪:
cqlsh> tracing on ;
我希望这会有所帮助!
【讨论】:
答案是肯定的,它来自所有节点,但这取决于您的集群配置、复制因子和一致性级别。
例如:- 您有 3 个节点集群,复制因子为 3,一致性级别是读写的仲裁,因此无论何时执行插入查询,您的数据都将复制到所有 3 个节点,但 2 个节点的确认足以协调员作为法定人数。如果您执行选择查询,请遵循相同的填充。
您也可以参考以下 Cassandra 文档:- http://cassandra.apache.org/doc/latest/architecture/dynamo.html#replication
【讨论】: