中间件增强框架之-CaptureFramework框架 (2)

即运行时数据,指的是在程序运行时产生的信息,程序占用的CPU、堆内存、JVM信息以及提供服务访问与客户端调用的相关统计信息(平均响应时间、访问计数等)。

3.2 服务端数据采集

DefaultMonitorSupporter的实现

中间件增强框架之-CaptureFramework框架

服务端数据采集以DefaultMonitorSupporter.start为入口点,构建monitor实例:

默认构建service类型的StandardMonitor实例,其中包含StandardMonitorRepository实例,StandardMonitorRepository实例注册monitor,一个该实例包含多个MonitorElement实例,并将所有的MonitorElement实例保存在elemsMap属性中。

elemsMap属性根据不同的采集对象保存不同的采集类handler:

ServerEndRespTimeCapHandler:采集Server、APP、URL的响应时间和加载计数等.

JVMStateCapHandler:采集jvm状态,包括Heap使用、GC计数、线程计数、CPU、class计数等。

代码片段如下:

中间件增强框架之-CaptureFramework框架

3.3 客户端数据采集

DefaultClientMonitorSupporter的实现 

中间件增强框架之-CaptureFramework框架

客户端数据采集以DefaultClientMonitorSupporter.start为入口点,构建monitor实例:

默认构建client类型的StandardMonitor实例,其中包含StandardMonitorRepository实例,StandardMonitorRepository实例注册monitor,一个该实例包含多个MonitorElement实例,并将所有的MonitorElement实例保存在elemsMap属性中。

elemsMap:属性只保存一个ClientRespTimeCapHandler采集类。

ClientRespTimeCapHandler:采集客户端的响应时间和加载计数等。

中间件增强框架之-CaptureFramework框架

无论是客户端的数据采集还是服务端的数据采集,都会将monitor安装到DataObserver中;并且最后都会将构建成功的monitor绑定至指定的捕获方法(即precap和docap)。

3.4 DataObServer的实现

DataObServer提供了两种模式来暴露接口数据,分别为JMX和HTTP:

HTTP方式:由HttpDataObserverWorker.start作为入口点,分别注册了三个handler,分别为获取JVM数据、Monitor数据以及profile数据的handler。不同的handler暴露了不同的接口,最终都返回了JSON格式的数据。

JMX方式:JMX代理通过getMBeanInfo方法获取暴露的接口,来获取数据。

DataObServer还提供了安装与卸载monitor、增加与移除listener以及获取profile和monitor的方法:

中间件增强框架之-CaptureFramework框架

官方网站:https://uavorg.github.io/main/

开源地址:https://github.com/uavorg

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzygg.html