使用datastax驱动程序检索有关cassandra集群数据中心的信息

时间:2018-02-02 08:15:06

标签: java cassandra datastax-java-driver

我需要使用其节点检索有关群集数据中心的信息。我需要使用datastax java驱动程序。所以我可以调用说" nodetool status"并解析其输出。

我曾尝试查询system.peers表(SELECT peer,data_center FROM system.peers),但它并未向我返回有关所有对等方和数据中心的实际信息。它仅包含属于其中一个数据中心的部分节点列表。

有办法吗?

2 个答案:

答案 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();