• 八方資訊網(wǎng)歡迎您!
    八方資訊網(wǎng)>科技>正文

    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾!

    2020-11-19 07:59:12 來源: 閱讀:-

    前言

    • 這篇文章主要是從pinpoint-web界面入手,我們的目標(biāo)是弄清楚兩個(gè)問題:

    - 1、 pinpoint左側(cè)服務(wù)地圖上的調(diào)用量數(shù)據(jù)是怎么查詢的?

    - 2、界面查詢條件WasOnly是什么意思?

    左側(cè)服務(wù)地圖調(diào)用量來源

    從下圖可以看出,A顯示被USER調(diào)用299次,線上數(shù)值代表著調(diào)用量。

    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾

    我們F12跟蹤一下接口地址:

    http://webip:port/getServerMapDataV2.pinpoint?applicationName=A

    &from=1575337980000&to=1575338040000

    &callerRange=1&calleeRange=1

    &bidirectional=false&wasOnly=false

    &serviceTypeName=SPRING_BOOT

    &_=1575337947426

    web上顯示的數(shù)據(jù),都是從hbase查詢出來的,所以跟蹤后端pinpoint-web工程源代碼,我們可以定位到hbase的一張表:ApplicationMapStatisticsCallee_Ver2。

    調(diào)用者(caller)和被調(diào)用者callee

    rowKey生成規(guī)則

    • 細(xì)節(jié)可以跟蹤源代碼了解

    rowKey生成規(guī)則:

    ApplicationMapStatisticsUtils.makeRowKey(...);

    Qualify列名生成規(guī)則:

    ApplicationMapStatisticsUtils.makeColumnName(...);

    我們都知道,界面查詢的時(shí)候可以選擇Inboud和outboud,并且最大顯示4X4的關(guān)系圖,所以在pinpoint設(shè)計(jì)的時(shí)候,就選擇存儲(chǔ)雙向關(guān)系:(目的就是構(gòu)造界面左側(cè)的服務(wù)地圖)。比如:

    TOMCAT ===》調(diào)用 MYSQL則對(duì)調(diào)用者生成如下消息:

    emeroad-app (TOMCAT) -> MySQL_DB_ID (MYSQL)[10.25.141.69:3306]

    而對(duì)被調(diào)用者M(jìn)YSQL生成:

    MySQL (MYSQL) <- emeroad-app (TOMCAT)[localhost:8080]

    hbase存儲(chǔ)

    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾

    hbase存儲(chǔ)結(jié)構(gòu)如上圖所示,因?yàn)槎际嵌M(jìn)制,所以列1,其實(shí)也是byte,而不是固定的字符名。

    什么時(shí)候存儲(chǔ)這個(gè)雙向關(guān)系?

    • 知道數(shù)據(jù)的底層存儲(chǔ)結(jié)構(gòu)了,下面,我們繼續(xù)來跟蹤,它是如何存進(jìn)來的,我們搜索一下引用,發(fā)現(xiàn),有5個(gè)地方調(diào)用了這個(gè)存儲(chǔ)的api。
    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾
    • 簡單明了,那我們就逐個(gè)擊破把!

    ①SpanChunkHandler中

    • 在chunk的結(jié)構(gòu)中,要求有spanEventList這個(gè)數(shù)據(jù),(因?yàn)檎{(diào)用量 和它內(nèi)部的EVENTBo 條數(shù) 是1:1),并且需要滿足isRecordStatistics記錄條件。
    • 當(dāng)滿足這兩個(gè)條件時(shí),就會(huì)生成 A->B, B<--A, 兩個(gè)關(guān)系,使其左側(cè)服務(wù)地圖調(diào)用量+1。
    • 其他位置邏輯類似,篇幅原因,這里不再細(xì)說。
    • ② SpanHandler,112行
    • ③ SpanHandler,117行
    • ④ SpanHandler,127行
    • ⑤ SpanHandler,189行

    wasOnly的含義

    • 還是通過上述的接口,我們可以跟蹤到,請(qǐng)求的參數(shù),被封裝到了一個(gè)這些參數(shù)都被封裝到了SearchOption這個(gè)類。

    private final int callerSearchDepth;

    private final int calleeSearchDepth;

    private final LinkSelectorType linkSelectorType;

    private final boolean wasOnly;

    怎么去看呢?這里提供一種思路,可能不適合所有人,大家參考一下。

    從定義的變量,去理解它的含義,然后去“猜”。

    callerSearchDepth: 調(diào)用者查詢深度。calleeSearchDepth:被調(diào)用者搜索深度。

    除了wasOnly 和linkSelectorType不知道具體含義,上面兩個(gè)應(yīng)該就是用來控制搜索深度的。那我們繼續(xù)跟蹤代碼:這里通過判斷是否是Was,新建了一個(gè)處理器。也就是說具體使用方法應(yīng)該是在這個(gè):callerLinkDataMapProcessor 類中。

    if (searchOption.isWasOnly()) {

    callerLinkDataMapProcessor = new WasOnlyProcessor();

    }

    看到這個(gè)類的accept方法相信大家,應(yīng)該會(huì)有所敏感,這應(yīng)該是用來判斷過濾條件的.

    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾
    • 從代碼中可以看出,這里和Application有關(guān),通過getServiceType
    • 的兩個(gè)方法來判斷是否過濾。
    • 有了這兩個(gè)方法,就好辦了,我們直接找它的實(shí)現(xiàn)就行了。
    • 根據(jù)依賴關(guān)系,我們定位到了ServiceTypeFactory這個(gè)工廠類、DefaultServiceType及ServiceTypeProperty,具體查找方式可以通過觀察這幾個(gè)類了解,關(guān)系如下:
    俠夢說pinpoint--左側(cè)服務(wù)地圖調(diào)用量和WasOn過濾

    結(jié)論

    • 粗略的理解:WAS ONLY會(huì)過濾類似于數(shù)據(jù)庫、或者是位置的節(jié)點(diǎn),讓界面展示清楚一些。
    • 用程序思維理解是:它會(huì)過濾掉serviceType為Unknown或者是Terminal的節(jié)點(diǎn),具體哪些節(jié)點(diǎn)會(huì)有這兩個(gè)屬性呢,我想大家可以去自行研究研究。
    • 我這里貼一個(gè)Unknown的,這個(gè)只有一個(gè)類型。

    // Callee node that agent hasn't been installed

    ServiceType UNKNOWN = of(1, "UNKNOWN", RECORD_STATISTICS);

    • 研究的時(shí)候,貼的圖文太多,我整理了word,這里就不再多敘述了,有需要的小伙伴,可以加我,我發(fā)給你。歡迎關(guān)注俠夢的開發(fā)筆記

    歡迎來公眾號(hào)【俠夢的開發(fā)筆記】 一起交流進(jìn)步

    本文為企業(yè)推廣,本網(wǎng)站不做任何建議,僅提供參考,作為信息展示!

    推薦閱讀:百金網(wǎng)

    網(wǎng)友評(píng)論
    請(qǐng)登錄后進(jìn)行評(píng)論| 0條評(píng)論

    請(qǐng)文明發(fā)言,還可以輸入140

    您的評(píng)論已經(jīng)發(fā)表成功,請(qǐng)等候?qū)徍?/p>

    小提示:您要為您發(fā)表的言論后果負(fù)責(zé),請(qǐng)各位遵守法紀(jì)注意語言文明

    回到首頁 回到頂部
    八方資訊網(wǎng) 關(guān)于我們| 聯(lián)系我們| 招聘信息| XML地圖| 網(wǎng)站地圖TXT
    免責(zé)聲明:八方資訊網(wǎng)所有文字、圖片、視頻、音頻等資料均來自互聯(lián)網(wǎng),不代表本站贊同其觀點(diǎn),本站亦不為其版權(quán)負(fù)責(zé)。相關(guān)作品的原創(chuàng)性、文中陳述文字以及內(nèi)容數(shù)據(jù)龐雜本站無法一一核實(shí),如果您發(fā)現(xiàn)本網(wǎng)站上有侵犯您的合法權(quán)益的內(nèi)容,請(qǐng)聯(lián)系我們,本網(wǎng)站將立即予以刪除!
    Copyright © 2012-2019 http://www.quan28.cn, All rights reserved.
    主站蜘蛛池模板: 日韩午夜高清福利片在线观看欧美亚洲精品suv| 无码8090精品久久一区| 九九线精品视频在线观看| 国产精品福利自产拍在线观看| 国产亚洲精品无码专区| 久久久久免费精品国产| 久久久久久夜精品精品免费啦| 久久国产精品波多野结衣AV| 国产精品视频免费观看| 欧美jizzhd精品欧美| 亚洲精品成人区在线观看| 国产亚洲精品无码专区| 四虎成人欧美精品在永久在线| 国产午夜福利精品久久2021| 曰韩精品无码一区二区三区| 欧美在线精品永久免费播放| 国产乱子伦精品免费视频| 91国内揄拍国内精品情侣对白| 国产91精品在线观看| 精品国产三级a在线观看| 亚洲国产成人一区二区精品区| 日本精品视频在线观看| 精品国精品国产自在久国产应用男| 亚洲综合精品香蕉久久网97| 国产精品一久久香蕉国产线看| 国产精品亚洲日韩欧美色窝窝色欲| 亚洲国产精品无码久久久秋霞2 | 亚洲欧美精品一区久久中文字幕| 国产乱子伦精品免费视频| 国产成人久久精品麻豆一区 | 免费精品视频在线| 久久久久久噜噜精品免费直播| 国产手机在线精品| 久久精品国产福利国产琪琪| 精品人妻少妇一区二区三区| 久久久国产精品| 日本国产精品久久| 亚洲国产精品自在拍在线播放 | 精品人妻少妇嫩草AV无码专区| 久久精品成人免费国产片小草| 久久www免费人成精品香蕉|