国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

UAV MOF工作原理之Agent注入機(jī)制原理

atinosun / 1529人閱讀

摘要:注入機(jī)制作為工作的基礎(chǔ),也為無(wú)侵入捕獲應(yīng)用數(shù)據(jù)提供可能。代碼注入機(jī)制結(jié)合和技術(shù),在應(yīng)用字節(jié)碼加載到之前進(jìn)行字節(jié)碼改寫(xiě)。當(dāng)然,修改字節(jié)碼文件流的動(dòng)作是在中進(jìn)行的。

UAVStack的中間件增強(qiáng)框架專(zhuān)題(MOF)】為大家詳細(xì)講述UAV中的MOF Agent是如何借助javaagent(premain)和javaassist技術(shù)在對(duì)應(yīng)用無(wú)侵入的前提下完成數(shù)據(jù)捕獲的。歡迎繼續(xù)關(guān)注UAVStack,了解UAV更多的技術(shù)創(chuàng)新。

前言

MOF(Moniter Framwork)作為UAV應(yīng)用數(shù)據(jù)捕獲框架,不但實(shí)現(xiàn)了對(duì)應(yīng)用無(wú)侵入的數(shù)據(jù)捕獲,而且在框架層面實(shí)現(xiàn)了功能的靈活控制,并且保證了良好的可擴(kuò)展性,在UAV中具有舉足輕重的地位。

MOF Agent注入機(jī)制作為UAV MOF工作的基礎(chǔ),也為UAV無(wú)侵入捕獲應(yīng)用數(shù)據(jù)提供可能。UAV Agent代碼注入機(jī)制結(jié)合javaagent(premain)和javaassist技術(shù),在應(yīng)用字節(jié)碼加載到JVM之前進(jìn)行字節(jié)碼改寫(xiě)。通過(guò)適配器適配(adaptor)不同應(yīng)用服務(wù)器,目前支持的包括Tomcat(6+)、SpringBoot、Jetty(7+)等,結(jié)合攔截器(interceptor)實(shí)現(xiàn)對(duì)不同應(yīng)用服務(wù)器切點(diǎn),為MOF框架和應(yīng)用數(shù)據(jù)捕獲提供基礎(chǔ)。

Java Agent技術(shù)

自JDK1.5開(kāi)始, JDK中引入了java.lang.Instrument包,提供在Java程序類(lèi)加載之前修改class字節(jié)碼和運(yùn)行時(shí)動(dòng)態(tài)修改系統(tǒng)中Class類(lèi)型的能力,其中一個(gè)核心概念即Java Agent,可以理解為一個(gè)字節(jié)碼轉(zhuǎn)換器或者Class對(duì)象轉(zhuǎn)換器。針對(duì)字節(jié)碼轉(zhuǎn)化和Class對(duì)象轉(zhuǎn)化,Java agent分別提供了相應(yīng)的方式,即Java agent premain方式和Java agent agentmain方式。UAV MOF使用的是Java agent premain方式,因此本文主要講解該轉(zhuǎn)化方式。

Java agent premain方式提供了在字節(jié)碼class文件被JVM加載之前攔截并修改的神奇能力,目前基本所有基于探針的監(jiān)控系統(tǒng)(如ONEAPM Servers)都是基于這種能力實(shí)現(xiàn)的對(duì)應(yīng)用的無(wú)侵入監(jiān)控。Java agent premain中有兩個(gè)重要的概念,分別是premain和transformer。

premain將在程序的main方法之前執(zhí)行,我們知道程序的入口是main方法,premain代表了在程序正式啟動(dòng)之前執(zhí)行的動(dòng)作,具備類(lèi)似AOP的能力。transformer,寓意轉(zhuǎn)化器,提供字節(jié)碼文件流轉(zhuǎn)化的能力。

圖1 Class文件轉(zhuǎn)化圖

集合premain和transformer兩大神器,可以對(duì)加載進(jìn)JVM的任意Class文件進(jìn)行修改。其流程如圖1所示,任何Class文件加載時(shí)候,都要經(jīng)過(guò)premain這一關(guān)卡,通過(guò)一系列的transformer,Class字節(jié)碼文件流最終變成那個(gè)完美的它,然后被加載到JVM中。當(dāng)然,修改Class字節(jié)碼文件流的動(dòng)作是在transformer中進(jìn)行的。這就有個(gè)問(wèn)題,拿到了字節(jié)碼文件流,怎么修改呢?當(dāng)然是發(fā)揮人類(lèi)的特長(zhǎng),借助工具,比如說(shuō)javassist。

Javassist技術(shù)

Javaassist是一個(gè)開(kāi)源的分析、編輯和創(chuàng)建Java字節(jié)碼的類(lèi)庫(kù),能運(yùn)行時(shí)動(dòng)態(tài)生成類(lèi),修改類(lèi),并且能直接使用java編碼。

前文Java agent技術(shù)中,在transformer中拿到了類(lèi)的字節(jié)碼文件流,利用Javaassist解析字節(jié)碼流為類(lèi)對(duì)象,并對(duì)其進(jìn)行修改,非常快速便捷。Javassist與Java agent結(jié)合將事半功倍。關(guān)于Javaassist的使用還請(qǐng)參考官網(wǎng)http://www.javassist.org。

MOF Agent注入機(jī)制

前文中介紹了一對(duì)好伙伴:Javaagent技術(shù)和Javassit技術(shù)。Java agent負(fù)責(zé)攔截和轉(zhuǎn)換字節(jié)碼流,轉(zhuǎn)換的過(guò)程中使用Javaassist進(jìn)行解析和修改。此兩者技術(shù)為MOF Agent注入機(jī)制提供了技術(shù)基礎(chǔ)。相信小伙伴對(duì)MOF Agent注入機(jī)制已經(jīng)有了一定了猜想。

圖2為MOF Agent的組件圖,MOFAgent基于java agent premain技術(shù)實(shí)現(xiàn),攔截所有加載的Class字節(jié)碼文件流;并通過(guò)UAV的transformer(MOFClsTransformer)進(jìn)行字節(jié)碼劫持和轉(zhuǎn)化。UAV做的不僅僅是這些,還能自動(dòng)感知不同應(yīng)用服務(wù)器,并對(duì)不同應(yīng)用服務(wù)器生命周期中的重要位置注入切點(diǎn)。UAV通過(guò)適配器(Adaptor)進(jìn)行不同應(yīng)用服務(wù)適配,通過(guò)攔截器(interceptor)進(jìn)行具體的切點(diǎn)注入實(shí)現(xiàn)。

圖2 MOF Agent組件圖

MOFAgent注入機(jī)制將對(duì)應(yīng)用服務(wù)器生命周期中關(guān)鍵位置注入切點(diǎn),為MOF框架初始化、應(yīng)用的畫(huà)像信息和實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)信息捕獲提供基礎(chǔ)。MOF Agent注入的不同切點(diǎn)會(huì)產(chǎn)生不同的事件,通過(guò)事件驅(qū)動(dòng)后續(xù)MOF框架。MOF支持的主要切點(diǎn)如下:

應(yīng)用服務(wù)器入口

應(yīng)用服務(wù)器入口切點(diǎn),UAV將完成MOF Jar包加載和配置文件初始化;

應(yīng)用服務(wù)器啟動(dòng)

應(yīng)用服務(wù)器啟動(dòng)時(shí),切將保證UAV MOF將隨應(yīng)用服務(wù)器啟動(dòng)完成MOF內(nèi)部代碼的自啟動(dòng)和初始化;

應(yīng)用服務(wù)器請(qǐng)求處理和回復(fù)

應(yīng)用服務(wù)器請(qǐng)求和回復(fù)切點(diǎn),是UAV對(duì)應(yīng)用實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)捕獲的重要切點(diǎn),監(jiān)控應(yīng)用服務(wù)器,應(yīng)用,所有的URL的性能指標(biāo);

應(yīng)用初始化

應(yīng)用初始化切點(diǎn)時(shí),UAV將對(duì)應(yīng)用的Filter進(jìn)行改寫(xiě),支持MOF的Global Filter機(jī)制;同時(shí)完成對(duì)應(yīng)用畫(huà)像信息進(jìn)行捕獲等;

應(yīng)用停止

應(yīng)用停止時(shí)切點(diǎn),UAV將完成MOF相關(guān)機(jī)制的停止等操作

本文主要目的是讓讀者了解UAV MOF Agent代碼注入機(jī)制原理和相關(guān)實(shí)現(xiàn)。MOF中其它重要框架及其實(shí)現(xiàn)原理將會(huì)在后續(xù)文章中依次剖析,敬請(qǐng)期待。
宜信技術(shù)學(xué)院

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72739.html

相關(guān)文章

  • UAVStack的慢SQL數(shù)據(jù)庫(kù)監(jiān)控功能及其實(shí)現(xiàn)

    摘要:頁(yè)面展示的統(tǒng)計(jì)追蹤等信息則通過(guò)的接口獲取四功能展示數(shù)據(jù)庫(kù)監(jiān)控目前已實(shí)現(xiàn)的功能有分類(lèi)統(tǒng)計(jì)數(shù)據(jù)庫(kù)連接池監(jiān)控慢耗時(shí)分布統(tǒng)計(jì)慢統(tǒng)計(jì)慢追蹤以及調(diào)用鏈日志關(guān)聯(lián)功能。 作者: 王林林 出處:UAVStack智能運(yùn)維 來(lái)源:宜信技術(shù)學(xué)院技術(shù)沙龍001期|AI中臺(tái):一種敏捷的智能業(yè)務(wù)支持方案|宜信技術(shù)沙龍 3月28日晚8點(diǎn)線上直播,點(diǎn)擊報(bào)名 UAVStack是一個(gè)全維監(jiān)控與應(yīng)用運(yùn)維平臺(tái)。UAV.Mon...

    luodongseu 評(píng)論0 收藏0
  • 中間件增強(qiáng)框架-CaptureFramework框架

    摘要:本文為大家講解中的框架。在系統(tǒng)中,中間件增強(qiáng)框架探針提供了應(yīng)用畫(huà)像及性能數(shù)據(jù)收集等功能,其中數(shù)據(jù)收集功能主要采集四類(lèi)數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)畫(huà)像數(shù)據(jù)調(diào)用鏈接數(shù)據(jù)生成以及線程數(shù)據(jù)分析數(shù)據(jù)。提供服務(wù),供后續(xù)抓取使用,其中服務(wù)注冊(cè)了三個(gè),分別為。 本文為大家講解MOF中的CaptureFramework框架。該框架提供統(tǒng)一的數(shù)據(jù)抓取行為和生成抓取結(jié)果能力,實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集。 背景 應(yīng)用服務(wù)監(jiān)控是智能運(yùn)維...

    zhaofeihao 評(píng)論0 收藏0
  • 中間件增強(qiáng)框架InterceptFramework

    摘要:攔截之前的準(zhǔn)備在應(yīng)用啟動(dòng)的特定生命周期內(nèi)改寫(xiě)字節(jié)碼,植入特定的邏輯處理代碼進(jìn)行攔截。劫持通過(guò)字節(jié)碼改寫(xiě)動(dòng)態(tài)代理等技術(shù),在客戶端調(diào)用代碼中嵌入特定處理邏輯,獲取調(diào)用相關(guān)的信息,如調(diào)用地址調(diào)用協(xié)議調(diào)用結(jié)果等。 這次我們?yōu)榇蠹規(guī)?lái)中間件增強(qiáng)框架專(zhuān)題(MOF)的最后一篇文章,為大家講解MOF中的InterceptFramework框架。該框架可以在應(yīng)用啟動(dòng)過(guò)程中獲取畫(huà)像信息,實(shí)現(xiàn)應(yīng)用畫(huà)像數(shù)據(jù)采...

    chnmagnus 評(píng)論0 收藏0
  • Kubernetes在宜信落地實(shí)踐

    摘要:容器云的背景伴隨著微服務(wù)的架構(gòu)的普及,結(jié)合開(kāi)源的和等微服務(wù)框架,宜信內(nèi)部很多業(yè)務(wù)線逐漸了從原來(lái)的單體架構(gòu)逐漸轉(zhuǎn)移到微服務(wù)架構(gòu)。 容器云的背景 伴隨著微服務(wù)的架構(gòu)的普及,結(jié)合開(kāi)源的Dubbo和Spring Cloud等微服務(wù)框架,宜信內(nèi)部很多業(yè)務(wù)線逐漸了從原來(lái)的單體架構(gòu)逐漸轉(zhuǎn)移到微服務(wù)架構(gòu)。應(yīng)用從有狀態(tài)到無(wú)狀態(tài),具體來(lái)說(shuō)將業(yè)務(wù)狀態(tài)數(shù)據(jù)如:會(huì)話、用戶數(shù)據(jù)等存儲(chǔ)到中間件中服務(wù)中。 showI...

    fxp 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<