是否有nodetool
的API?特别是nodetool tablestats
我看到有https://github.com/scylladb/scylla/tree/master/api/api-doc。这是寻找API的合适地方吗?
答案 0 :(得分:10)
Scylla服务器确实具有REST API,并且其文档位于您指向的URL上。您也可以在启动Scylla服务器时找到Swagger UI:https://docs.scylladb.com/operating-scylla/rest/。
但是,请注意,例如nodetool
并不直接使用API。相反,它与Scylla JMX代理进行通信,该代理是一个Java进程,实现了与Cassandra兼容的JMX API。您仍然可以直接使用REST API,但是您必须自己弄清楚JMX操作和REST API之间的映射。
对于nodetool tablestats
之类的东西,第一步是检查nodetool使用的JMX API:
命令委托给TableStatsHolder类:
使用ColumnFamilyStoreMBean JMX API查询表统计信息。
您可以通过找到ColumnFamilyStore类(不带MBean后缀)在scylla-jmx项目中找到JMX API的实现:
从该类中,您可以看到例如ColumnFamilyStore.getSSTableCountPerLevel()
方法委托给column_family/sstables/per_level/<table name>
REST API URL。
答案 1 :(得分:3)
嗯,第一次我在这里通过直接访问API重新实现了nodetool: https://github.com/scylladb/scylla-tools-java/pull/121
它可以工作,但是在代码方面,我将进行一些重构以避免重复,否则它完全可以在REST API上使用(跳过JMX的“ tablestats”)。
hth L