成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java調(diào)用鏈跟蹤關(guān)鍵技術(shù)(一)總體介紹

gaara / 1620人閱讀

摘要:微服務(wù)中調(diào)用棧的獲取,使用的開發(fā)者會(huì)很自然想到用來(lái)攔截,但是攔截同一個(gè)類的多個(gè)方法之間的調(diào)用很不方便,有侵入性,因此并不適合。調(diào)用棧的跟蹤也提供了這個(gè)能力,可以獲得當(dāng)前方法的調(diào)用棧信息。

一、調(diào)用鏈跟蹤的作用

調(diào)用鏈跟蹤包括

1.前端到后端的調(diào)用鏈

2.單個(gè)服務(wù)內(nèi)部方法之間的調(diào)用鏈

3.微服務(wù)之間的調(diào)用鏈

4.應(yīng)用服務(wù)和數(shù)據(jù)庫(kù)之間的調(diào)用鏈

5.應(yīng)用服務(wù)和第三方服務(wù)中間的調(diào)用鏈,例如Redis,MQ

調(diào)用鏈跟蹤的作用有:

1.定位多個(gè)微服務(wù)調(diào)用故障時(shí)哪個(gè)是故障點(diǎn)。

2.性能分析

3.SQL分析

4.方法或服務(wù)調(diào)用合理性分析

5.調(diào)用邏輯和數(shù)據(jù)流分析,這點(diǎn)對(duì)于新人特別有用,看了調(diào)用鏈和執(zhí)行SQL就知道具體做了啥

二、調(diào)用鏈跟蹤的需求

那么調(diào)用鏈跟蹤涉及到需求有哪些,看圖:

1.前端到后端以及多個(gè)微服務(wù)之間需要將調(diào)用信息傳遞過(guò)去,否則調(diào)用鏈會(huì)斷掉

2.每個(gè)微服務(wù)要能獲取到調(diào)用棧,注意調(diào)用棧和調(diào)用順序不同,僅僅獲取調(diào)用順序是不夠的,試比較:

左圖只體現(xiàn)了調(diào)用順序,沒(méi)有體現(xiàn)調(diào)用棧信息,而右圖既體現(xiàn)了調(diào)用順序又體現(xiàn)了調(diào)用棧信息。

3.微服務(wù)內(nèi)部的調(diào)用信息要能傳遞,并且做到無(wú)侵入

4.和數(shù)據(jù)庫(kù)交互的微服務(wù)要能獲取到調(diào)用的SQL

三、Java調(diào)用鏈跟蹤涉及的關(guān)鍵技術(shù)

調(diào)用信息傳遞,這個(gè)信息可以通過(guò)http消息頭傳遞

1) 前端只要在發(fā)送請(qǐng)求時(shí)設(shè)置就好。不過(guò)通常一般不跟蹤前端的調(diào)用耗時(shí),因?yàn)槟菢訒?huì)多一次網(wǎng)絡(luò)交互。

2) 對(duì)于微服務(wù)需要攔截request請(qǐng)求將調(diào)用鏈信息設(shè)置到消息頭中,在spring中可以通過(guò)寫RestTemplate攔截器和Fegin攔截器來(lái)實(shí)現(xiàn)。

微服務(wù)中調(diào)用棧的獲取,使用spring的開發(fā)者會(huì)很自然想到用AOP來(lái)攔截,但是spring AOP攔截同一個(gè)類的多個(gè)方法之間的調(diào)用很不方便,有侵入性,因此并不適合。最好的方式是使用javaagent,通過(guò)代碼注入的方式來(lái)攔截。

微服務(wù)內(nèi)部調(diào)用信息傳遞需要通過(guò)線程范圍的變量來(lái)傳遞,Java中的ThreadLocal已經(jīng)提供了這個(gè)能力。

調(diào)用棧的跟蹤Java也提供了這個(gè)能力,可以獲得當(dāng)前方法的調(diào)用棧信息。

SQL監(jiān)控,對(duì)于使用mybatis的會(huì)想到用mybatis的攔截器,這種方式有的情況下會(huì)不工作(原因未明),并且依賴mybatis,因此應(yīng)用更底層的方法去攔截SQL,一種方式是自行實(shí)現(xiàn)JDBC代理類,另一種方式是使用第三方開源的SQL監(jiān)控工具。

end.

加入《Java棧實(shí)戰(zhàn)營(yíng)》知識(shí)星球,參與討論,更多實(shí)戰(zhàn)代碼分享,不就是幾斤蘋果,幾個(gè)榮耀道具的事嗎!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75796.html

相關(guān)文章

  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(二)Javaagent

    摘要:一網(wǎng)上關(guān)于的介紹很多,請(qǐng)找度娘和谷兄。唯一提的一點(diǎn)是字節(jié)碼注入比較好用的是,封裝度很高,使用簡(jiǎn)單。二代碼樣例以下為關(guān)鍵代碼樣例,可以依樣畫瓢自行改造。加入棧實(shí)戰(zhàn)營(yíng)知識(shí)星球,參與討論,更多實(shí)戰(zhàn)代碼分享,不就是幾斤蘋果,幾個(gè)榮耀道具的事嗎 一、Javaagent 網(wǎng)上關(guān)于Javaagent的介紹很多,請(qǐng)找度娘和谷兄。唯一提的一點(diǎn)是字節(jié)碼注入比較好用的是bytebuddy,封裝度很高,使用簡(jiǎn)...

    geekzhou 評(píng)論0 收藏0
  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(四)SQL監(jiān)控

    摘要:一監(jiān)控一般思路中監(jiān)控一般通過(guò)代理模式實(shí)現(xiàn),如下右邊是接口類。配置將項(xiàng)目下文件放到目錄下或者中,找到將類名修改為你自己的實(shí)現(xiàn)類,并去掉其他所有配置都不用修改就可以監(jiān)控到。至此,可以監(jiān)控到語(yǔ)句了。 一、SQL監(jiān)控一般思路 Java中SQL監(jiān)控一般通過(guò)代理模式實(shí)現(xiàn),如下: showImg(https://segmentfault.com/img/bVbvWML?w=2187&h=1090)...

    ?xiaoxiao, 評(píng)論0 收藏0
  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(三)線程變量

    摘要:除了以上級(jí)別的成員變量共享,在調(diào)用鏈跟蹤時(shí)要能識(shí)別不同分層下的多個(gè)類實(shí)例的調(diào)用是同一個(gè)請(qǐng)求,而這個(gè)請(qǐng)求的調(diào)用都在一個(gè)獨(dú)立線程內(nèi)完成,此時(shí)就要用到線程級(jí)變量共享。 一、Java類成員作用域 JAVA類成員作用域參考下圖: showImg(https://segmentfault.com/img/bVbvWlh?w=1695&h=925); Java虛擬機(jī)級(jí)作用域,通過(guò)在類成員變量前加...

    ThreeWords 評(píng)論0 收藏0
  • Java調(diào)用跟蹤關(guān)鍵技術(shù)(五)獲取調(diào)用

    摘要:一調(diào)用棧調(diào)用鏈監(jiān)控僅僅獲取調(diào)用順序是不夠的,如前所描述左邊只體現(xiàn)了順序,右邊體現(xiàn)了順序和調(diào)用棧信息。二獲取調(diào)用棧在中獲取調(diào)用棧的方法如下代碼示例輸出結(jié)果可以看到第個(gè)棧是調(diào)用的方法。 一、調(diào)用棧 調(diào)用鏈監(jiān)控僅僅獲取調(diào)用順序是不夠的,如前所描述: showImg(https://segmentfault.com/img/bVbvV9H?w=500&h=230);左邊只體現(xiàn)了順序,右邊體現(xiàn)...

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

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

0條評(píng)論

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