2016-01-19 27 views
2

有没有一种方法可以在没有上下文的情况下确定Cassandra集群中的节点数量?如何以编程方式确定Cassandra集群中的节点数量?

我试图让这个数字,以确保用户不会给我一个复制的因素太大(即说10只有9个节点。)

重要:在这一点上,我唯一的界面是C.节俭

注:我看着使用describe_ring(),但遗憾的是,该功能可强制你有一个有效的上下文(因此它描述了环这方面,而不是Cassandra集群中现有节点的数量。)

回答

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> 
) 

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

+0

啊!我现在看到它。我有一个使用Cassandra 1.1.5的节点,它尚不存在。但是在Cassandra 2.0.1中它就在那里。大! 8-) –

+0

那么......不知何故节俭似乎无法看到同行表。我想它必须在CQL上完成。我现在不得不推迟这个功能。 –

相关问题