2016-01-19 68 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上完成。我現在不得不推遲這個功能。 –

相關問題