首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scylla nodetool有API吗?

scylla nodetool有API吗?
EN

Stack Overflow用户
提问于 2019-12-07 06:32:12
回答 2查看 583关注 0票数 8

有没有nodetool的接口?尤其是nodetool tablestats

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-08 15:03:20

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

但是需要注意的是,例如nodetool并没有直接使用该接口。相反,它与Scylla JMX代理通信,这是一个实现与Cassandra兼容的JMX API的Java进程。您仍然可以直接使用REST API,但您必须自己找出JMX操作和REST API之间的映射。

对于像nodetool tablestats这样的东西,第一步是检查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的实现:

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。

票数 11
EN

Stack Overflow用户

发布于 2019-12-09 16:08:42

嗯,FWIW我在这里通过直接访问API重新实现了nodetool:https://github.com/scylladb/scylla-tools-java/pull/121

它可以工作,但在代码方面,我会做一些重构以避免重复,否则它是完全可用的nodetool,而不是REST API (它跳过JMX的"tablestats")

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59221137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档