如何以编程方式确定Cassandra集群中的节点数?

时间:2016-01-19 08:08:30

标签: c cassandra thrift cassandra-2.0

有没有办法在没有上下文的情况下确定Cassandra集群中的节点数?

我正在尝试获取该数字,以确保用户不会给我一个太大的复制因子(即只有9个节点表示10)。

重要提示:此时,我所拥有的唯一界面是C中的节俭。

注意:我研究过使用describe_ring(),但不幸的是,该函数强制您拥有一个有效的上下文(因此它描述了该上下文的环,而不是现有节点的数量)卡桑德拉集群。)

1 个答案:

答案 0 :(得分:3)

您可以使用Thrift协议查看系统表: system.peers 。此处列出了所有其他节点及其信息,但未列出本地节点。通过计算 system.peers 中的节点数,总节点数为entries_count_in_peers + 1

以下是 system.peers

的结构(CQL)
CREATE TABLE system.peers (
    peer inet PRIMARY KEY,
    data_center text,
    host_id uuid,
    preferred_ip inet,
    rack text,
    release_version text,
    rpc_address inet,
    schema_version uuid,
    tokens set<text>
)

每个节点有一个分区(Thrift术语中的行键)