真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行CaptureFramework框架分析-創(chuàng)新互聯(lián)

這篇文章跟大家分析一下“如何進(jìn)行CaptureFramework框架分析”。內(nèi)容詳細(xì)易懂,對“如何進(jìn)行CaptureFramework框架分析”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭?。下面跟著小編一起深入學(xué)習(xí)“如何進(jìn)行CaptureFramework框架分析”的知識吧。

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)建站堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),小程序定制開發(fā),軟件按需網(wǎng)站開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

一、背景

應(yīng)用服務(wù)監(jiān)控是智能運(yùn)維系統(tǒng)的重要組成部分。在UAV系統(tǒng)中,中間件增強(qiáng)框架(MOF)探針提供了應(yīng)用畫像及性能數(shù)據(jù)收集等功能,其中數(shù)據(jù)收集功能主要采集四類數(shù)據(jù):實(shí)時數(shù)據(jù)、畫像數(shù)據(jù)、調(diào)用鏈接數(shù)據(jù)生成以及線程數(shù)據(jù)分析數(shù)據(jù)。為實(shí)現(xiàn)實(shí)時數(shù)據(jù)采集,UAVStack設(shè)計了CaptureFramework框架,提供統(tǒng)一的數(shù)據(jù)抓取行為和生成抓取結(jié)果能力。

二、CaptureFramework運(yùn)行原理

如何進(jìn)行CaptureFramework框架分析

2.1 關(guān)鍵技術(shù)說明

  • JavaAssist

  • Monitor捕獲體系

  • precap/docap

2.2 架構(gòu)說明

  • 捕獲點(diǎn):支持Tomcat、MSCP、Springboot、Jetty埋點(diǎn)。

  • UAVServer單例:作為統(tǒng)一的捕獲入口點(diǎn),提供了同步和異步方法。

  • StandardMonitor:實(shí)現(xiàn)了Monitor接口,是實(shí)時數(shù)據(jù)抓取實(shí)現(xiàn)類,提供了doCapture方法,負(fù)責(zé)抓取行為和生成抓取結(jié)果。

  • MonitorElemCapHandler:不同的抓取邏輯和抓取點(diǎn)的共同接口實(shí)現(xiàn)不同的埋點(diǎn)邏輯,提供了抓取行為的方法preCap與doCap以及生成抓取結(jié)果的方法preStore。

  • StandardMonitorRepository:存儲實(shí)時數(shù)據(jù)抓取數(shù)據(jù)結(jié)構(gòu)。

  • DataObserver:暴露了JMX/HTTP接口數(shù)據(jù)。

2.3 關(guān)鍵類說明

  • Monitor實(shí)時監(jiān)控主要是從DefaultMonitorSupporter類啟動初始化StandardMonitor對象,通過CaptureFramework將monitor對象安裝到DataStore對象中。

  • DataObserver提供JMX/HTTP服務(wù),供后續(xù)MA抓取使用,其中Http服務(wù)注冊了三個handler,分別為HttpJEEJVMObserver、HttpJEEMonitorObserver、 HttpJEEProfileObserver。不同的handler暴露了不同的接口。

  • MonitorHandler包下的Handler類具體處理Monitor的指標(biāo)數(shù)據(jù)計算和統(tǒng)計。

2.4 捕獲點(diǎn)剖析

CaptureFrameWork框架提供了統(tǒng)一的捕獲入口點(diǎn),在UAVServer中分別提供了同步方法與異步方法:

  • 同步捕獲入口點(diǎn):runMonitorCaptureOnServerCapPoint

  • 異步捕獲入口點(diǎn):runMonitorAsyncCaptureOnServerCapPoint

2.4.1 同步與異步調(diào)用的差異分析

異步比同步多增加了一個參數(shù)CaptureContextMapFromAnotherThread,該參數(shù)若不為空,則需要合并上下文的信息。一般情況下在使用異步方法埋點(diǎn)時,在方法執(zhí)行前調(diào)用異步捕獲方法傳入的CaptureContextMapFromAnotherThread為空,并返回封裝好的上下文信息,在方法執(zhí)行結(jié)束后調(diào)用異步捕獲方法傳入上下文信息,并進(jìn)行上下文信息合并,再進(jìn)行具體的捕獲操作,具體可參考以下代碼片段:

  • 方法執(zhí)行前的異步調(diào)用

如何進(jìn)行CaptureFramework框架分析

  • 方法執(zhí)行后的異步調(diào)用如下,其中ccMap為異步調(diào)用返回的封裝好的上下文信息

如何進(jìn)行CaptureFramework框架分析

2.5 抓取行為剖析

  • Monitor接口:提供了多個接口,其中最主要的是doCapture與doPreStore方法,doCapture用來實(shí)現(xiàn)在特定的捕獲點(diǎn)執(zhí)行抓取數(shù)據(jù)行為,doPreStore方法用來實(shí)現(xiàn)在存儲到數(shù)據(jù)結(jié)構(gòu)之前的一些捕獲動作,做一些特殊數(shù)據(jù)的處理。

  • StandardMonitor類: Monitor接口的具體實(shí)現(xiàn)類。

  • StandardMonitorRepository類:存儲實(shí)時數(shù)據(jù)抓取數(shù)據(jù)結(jié)構(gòu)。

  • MonitorElementInstance接口:存儲實(shí)時數(shù)據(jù)抓取數(shù)據(jù)結(jié)構(gòu)的實(shí)例接口。

  • StandardMonitorElementInstance類:MonitorElementInstance接口的具體實(shí)現(xiàn)類。

無論是同步捕獲入口點(diǎn)還是異步捕獲入口點(diǎn)都會執(zhí)行doCapture方法,代碼片段如下:

如何進(jìn)行CaptureFramework框架分析

monitor.doCapture是調(diào)用了Monitor接口中的doCapture,其實(shí)現(xiàn)類是StandardMonitor。

StandardMonitor中的doCapture方法主要做了如下操作:

  • 根據(jù)參數(shù)獲取當(dāng)前的MonitorElement數(shù)組,MonitorElement數(shù)組通過StandardMonitorRepository的getElementByCapId實(shí)現(xiàn);

  • 循環(huán)處理MonitorElement數(shù)組,獲取捕捉數(shù)據(jù)實(shí)現(xiàn)類,根據(jù)實(shí)現(xiàn)類獲取當(dāng)前要執(zhí)行的handler,最后根據(jù)當(dāng)前獲取的handler判斷捕獲階段(precap/docap),然后進(jìn)行相應(yīng)的處理。不同的handler根據(jù)不同的特性處理生成MonitorElementInstance,最后將結(jié)果存儲在StandardMonitorRepository數(shù)據(jù)結(jié)構(gòu)中。

以ServerEndRespTimeCapHandler(服務(wù)端抓取行為)為例:

  • preCap方法:只記錄了服務(wù)的開始請求時間。

  • doCap方法:根據(jù)不同的monitorElemId進(jìn)行不同的邏輯處理,最后封裝好MonitorElementInstance實(shí)例,然后再進(jìn)行抓取行為結(jié)果的處理,其中包含大值消峰、大值、最小值、返回狀態(tài)碼、時間戳更新、計數(shù)等相應(yīng)的數(shù)據(jù)處理。

三、實(shí)時數(shù)據(jù)采集

3.1 什么是實(shí)時數(shù)據(jù)

即運(yùn)行時數(shù)據(jù),指的是在程序運(yùn)行時產(chǎn)生的信息,程序占用的CPU、堆內(nèi)存、JVM信息以及提供服務(wù)訪問與客戶端調(diào)用的相關(guān)統(tǒng)計信息(平均響應(yīng)時間、訪問計數(shù)等)。

3.2 服務(wù)端數(shù)據(jù)采集

DefaultMonitorSupporter的實(shí)現(xiàn)

如何進(jìn)行CaptureFramework框架分析

服務(wù)端數(shù)據(jù)采集以DefaultMonitorSupporter.start為入口點(diǎn),構(gòu)建monitor實(shí)例:

如何進(jìn)行CaptureFramework框架分析

默認(rèn)構(gòu)建service類型的StandardMonitor實(shí)例,其中包含StandardMonitorRepository實(shí)例,StandardMonitorRepository實(shí)例注冊monitor,一個該實(shí)例包含多個MonitorElement實(shí)例,并將所有的MonitorElement實(shí)例保存在elemsMap屬性中。

elemsMap屬性根據(jù)不同的采集對象保存不同的采集類handler:

  • ServerEndRespTimeCapHandler:采集Server、APP、URL的響應(yīng)時間和加載計數(shù)等.

  • JVMStateCapHandler:采集jvm狀態(tài),包括Heap使用、GC計數(shù)、線程計數(shù)、CPU、class計數(shù)等。

代碼片段如下:

如何進(jìn)行CaptureFramework框架分析

如何進(jìn)行CaptureFramework框架分析

3.3 客戶端數(shù)據(jù)采集

DefaultClientMonitorSupporter的實(shí)現(xiàn) 如何進(jìn)行CaptureFramework框架分析

客戶端數(shù)據(jù)采集以DefaultClientMonitorSupporter.start為入口點(diǎn),構(gòu)建monitor實(shí)例:

如何進(jìn)行CaptureFramework框架分析

默認(rèn)構(gòu)建client類型的StandardMonitor實(shí)例,其中包含StandardMonitorRepository實(shí)例,StandardMonitorRepository實(shí)例注冊monitor,一個該實(shí)例包含多個MonitorElement實(shí)例,并將所有的MonitorElement實(shí)例保存在elemsMap屬性中。

  • elemsMap:屬性只保存一個ClientRespTimeCapHandler采集類。

  • ClientRespTimeCapHandler:采集客戶端的響應(yīng)時間和加載計數(shù)等。

如何進(jìn)行CaptureFramework框架分析

無論是客戶端的數(shù)據(jù)采集還是服務(wù)端的數(shù)據(jù)采集,都會將monitor安裝到DataObserver中;并且最后都會將構(gòu)建成功的monitor綁定至指定的捕獲方法(即precap和docap)。

3.4 DataObServer的實(shí)現(xiàn)

DataObServer提供了兩種模式來暴露接口數(shù)據(jù),分別為JMX和HTTP:

  • HTTP方式:由HttpDataObserverWorker.start作為入口點(diǎn),分別注冊了三個handler,分別為獲取JVM數(shù)據(jù)、Monitor數(shù)據(jù)以及profile數(shù)據(jù)的handler。不同的handler暴露了不同的接口,最終都返回了JSON格式的數(shù)據(jù)。

  • JMX方式:JMX代理通過getMBeanInfo方法獲取暴露的接口,來獲取數(shù)據(jù)。

DataObServer還提供了安裝與卸載monitor、增加與移除listener以及獲取profile和monitor的方法:

如何進(jìn)行CaptureFramework框架分析

關(guān)于如何進(jìn)行CaptureFramework框架分析就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下創(chuàng)新互聯(lián)網(wǎng)站!


文章標(biāo)題:如何進(jìn)行CaptureFramework框架分析-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/ipocs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部