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 将這些聚合資料塞入 BlockingQueue queue 中(隊
列大寫為 100000)4、SimpleMonitorService 使用一個背景線程(線程名為:
DubboMonitorAsyncWriteLogThread)将 queue 中的資料寫入檔案(該線程以
死循環的形式來寫)
5、SimpleMonitorService 還會使用一個含有 1 個線程(線程名字:
DubboMonitorTimer)的線程池每隔 5min 鐘,将檔案中的統計資料畫成圖表
Java Program!