是否有用于 scylla nodetool 的 API?

Sil*_*non 8 scylla

有 APInodetool吗?尤其nodetool tablestats

我看到有https://github.com/scylladb/scylla/tree/master/api/api-doc。这是寻找 API 的正确地方吗?

Pek*_*erg 11

Scylla 服务器确实有一个 REST API,它的文档位于您指向的 URL 中。您也可以在启动 Scylla 服务器时找到 Swagger UI:https : //docs.scylladb.com/operating-scylla/rest/

但是,请注意nodetool,例如,不直接使用 API。相反,它与 Scylla JMX 代理通信,后者是一个实现与 Cassandra 兼容的 JMX API 的 Java 进程。您仍然可以直接使用 REST API,但您必须自己弄清楚 JMX 操作和 REST API 之间的映射。

对于类似nodetool tablestats,第一步是检查 nodetool 使用的 JMX API:

https://github.com/scylladb/scylla-tools-java/blob/master/src/java/org/apache/cassandra/tools/nodetool/TableStats.java

该命令委托给 TableStatsHolder 类:

https://github.com/scylladb/scylla-tools-java/blob/master/src/java/org/apache/cassandra/tools/nodetool/stats/TableStatsHolder.java#L117

它使用 ColumnFamilyStoreMBean JMX API 来查询表统计信息。

您可以通过查找 ColumnFamilyStore 类(不带 MBean 后缀)在 scylla-jmx 项目中找到 JMX API 的实现:

https://github.com/scylladb/scylla-jmx/blob/master/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java

例如,从该类中,您可以看到该ColumnFamilyStore.getSSTableCountPerLevel()方法委托给column_family/sstables/per_level/<table name>REST API URL。