solr(例如solr(的几个基于Java的项目提供了两种获取指标的方法:
- 通过Jolokia和 阅读JMX MBEANS
- 通过指标REST API读取指标
从理论上讲,哪个会更性能?
(现在假设一个单个节点群集(。
看来,基于Jolokia的指标可能更具性能,因为Jolokia流程不会像Jetty这样的服务器的网络容器。相反,Jolokia将以JAVA-PROCESS-JAVA-JAVA-PROCESS级别获取JMX指标。REST API肯定更容易理解和解析。但是,它涉及将通过Jetty进行的休息电话,可能会为每个请求带一个线程吗?等等。
Server ---> JMX ---> Jolokia ---> REST api of Jolokia
Server ---> REST api of Server itself
在这方面,乔洛基亚(Jolokia(重量轻?请注意,重量减轻意味着对服务器的影响,而不是整体延迟。指标提取的调用应尽可能少纳税,而指标调用的总体延迟实际上并不重要。
我们想在这些方法之一之间选择从所有solr节点中每分钟查询指标,然后推向grafana。
对此提出一些建议。
没有明确的答案(并且尚无任何基准测试(。但是,由于Jolokia可以被视为像接口那样的休息,所以我期望没有任何显着差异。实际上,ActiveMQ使用JOLOKIA作为指标" REST"接口。
需要考虑以下成本因素:
- (内部(指标本身
- 序列化访问/来自JSON/XML
- 运输成本
- HTTP处理开销
每个指标访问在这里都有类似的成本。为了暴露指标,Jolokia还使用HTTP服务器(JVM内部或外部类似Jetty(,因此没有太大的区别。
最大的差异可能是序列化成本(载有大部分负载(,因此取决于所使用的JSON序列化库。乔洛基亚(Jolokia(在这里使用json-simple,这很快。
但是,一个非常重要的方面是应该查询的指标。由于每个自定义指标API(例如您所指的SOLR(以各种格式公开不同类型的指标,因此您需要将监视解决方案调整为其。相比之下,由于Jolokia公开了JMX,这是标准的,因此在不同的情况下更适用。
但最后,只有真正的基准会给您答案。