我需要使用其节点检索有关群集数据中心的信息。我需要使用datastax java驱动程序。所以我可以不调用说" nodetool status
"并解析其输出。
我曾尝试查询system.peers
表(SELECT peer,data_center FROM system.peers
),但它并未向我返回有关所有对等方和数据中心的实际信息。它仅包含属于其中一个数据中心的部分节点列表。
有办法吗?
答案 0 :(得分:4)
检查Metadata课程。 getAllHosts()
返回一个Set,每个主机包含有关该主机的所有信息,包括dc。
答案 1 :(得分:0)
@Horia has given我很清楚如何正确解决这个问题。事实上
Metadata.getAllHosts()
方法不返回完整的主机列表。它仅返回有关N
个主机的信息,其中N
等于复制因子。因此,它不必包含来自多个数据中心的主机。
但是使用这个课我发现了另一种方法。 Metadata.getKeyspace(...)
方法返回一个KeyspaceMetadata
对象,其中包含有关所有数据中心的信息:
Cluster cluster = ...
Metadata metadata = cluster.getMetadata();
Map<String, String> replication = metadata.getKeyspace("keyspace_name").getReplication();