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

Retrieve information about cassandra cluster datacenters using datastax driver

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

我已经尝试查询 system.peers table (SELECT peer,data_center FROM system.peers),但它 return 我没有关于所有对等点和数据中心的实际信息。它仅包含属于其中一个数据中心的部分节点列表。

有什么办法吗?

检查 Metadata class。 getAllHosts() returns 一个集合,每个主机包含关于该主机的所有信息,包括 dc。

@Horia 我很好地提示了如何正确解决此问题。实际上 Metadata.getAllHosts() 方法 returns 不是完整的主机列表。它 returns 仅关于 N 主机的信息,其中 N 等于复制因子。所以它没有必要包含来自多个数据中心的主机。

但是使用这个 class 我找到了另一种方法来做到这一点。 Metadata.getKeyspace(...) 方法 returns KeyspaceMetadata 包含所有数据中心信息的对象:

Cluster cluster = ...
Metadata metadata = cluster.getMetadata();
Map<String, String> replication = metadata.getKeyspace("keyspace_name").getReplication();