Dubbo Monitor 实现原理原理是什么?

提问者:帅平 问题分类:面试刷题
Dubbo Monitor 实现原理原理是什么?
1 个回答
素手烹茶べ待君归
素手烹茶べ待君归
Consumer 端在发起调用之前会先走 filter 链;provider 端在接收到请求时也是先走 filter 链,然后才进行真正的业务逻辑处理。默认情况下,在 consumer 和 provider 的 filter 链中都会有Monitorfilter
他的整体流程如下:
1、MonitorFilter向DubboMonitor发送数据;
2、DubboMonitor将数据进行聚合后(默认聚合1min中的统计数据)暂存到;ConcurrentMap<Statistics, AtomicReference> statisticsMap,然后使用一个含有 3 个线程(线程名字:DubboMonitorSendTimer)的线程池每隔 1min 钟,调用 SimpleMonitorService 遍历发送 statisticsMap 中的统计数据,每发送完毕一个,就重置当前的 Statistics 的AtomicReference
3、SimpleMonitorService将这些聚合数据塞入BlockingQueuequeue中(队列大写为100000);
4、SimpleMonitorService使用一个后台线程(线程名为:DubboMonitorAsyncWriteLogThread);将 queue 中的数据写入文件(该线程以死循环的形式来写)
5、SimpleMonitorService还会使用一个含有1个线程(线程名字:DubboMonitorTimer)的线程池每隔 5min 钟,将文件中的统计数据画成图表
发布于:1周前 (04-21) IP属地:
我来回答