欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法及其系統(tǒng)與流程

文檔序號:12751817閱讀:662來源:國知局

本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法及其系統(tǒng)。



背景技術(shù):

隨著公司業(yè)務(wù)的發(fā)展壯大,各個業(yè)務(wù)系統(tǒng)衍生的接口越來越多,各接口之間相互調(diào)用關(guān)系越來越復(fù)雜,例如:一個A請求,需要調(diào)用B接口和C接口,其中B接口中又調(diào)了D接口,C接口調(diào)用了E接口。系統(tǒng)分析人員想知道系統(tǒng)的瓶頸、性能以及各接口使用率,已經(jīng)無法全盤掌控,一旦某些接口出現(xiàn)瓶頸,將直接影響整個系統(tǒng)的性能。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明的主要目的在于提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法及其系統(tǒng)。

為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:

本發(fā)明實(shí)施例提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法,該方法為:任意一業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;當(dāng)任意一業(yè)務(wù)接口調(diào)用另一個業(yè)務(wù)接口時,將攜帶所述跟蹤ID的通訊報文發(fā)送給另一業(yè)務(wù)接口,所述另一接口解出通訊報文,檢查是否攜帶有跟蹤ID,如果攜帶有跟蹤ID,生成的跟蹤數(shù)據(jù)中增加節(jié)點(diǎn)parent_id,形成父子關(guān)系,將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;周期性地將每個業(yè)務(wù)接口對應(yīng)的緩存中的跟蹤數(shù)據(jù)根據(jù)先進(jìn)先出方式取出,根據(jù)所述跟蹤數(shù)據(jù)中的節(jié)點(diǎn)和跟蹤ID確定每一個調(diào)用鏈的層級依賴關(guān)系;所述跟蹤數(shù)據(jù)還包括調(diào)用發(fā)起時間、發(fā)起IP、發(fā)起服務(wù)的服務(wù)名稱、Span名稱、調(diào)用結(jié)束時間;所述通訊報文的通訊方式為http或者socket。

上述方案中,該方法還包括:當(dāng)該業(yè)務(wù)接口調(diào)用另一個業(yè)務(wù)接口時,將攜帶所述跟蹤ID的通訊報文發(fā)送給另一業(yè)務(wù)接口,所述另一接口解出通訊報文,檢查是否攜帶有跟蹤ID,如果沒有攜帶跟蹤ID,則所述另一個業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中。

本發(fā)明實(shí)施例還提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)系統(tǒng),該系統(tǒng)包括:跟蹤數(shù)據(jù)生成單元、調(diào)用單元、解析單元、讀取顯示單元;

所述跟蹤數(shù)據(jù)生成單元,用于針對任意一業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;還用于如果所述通訊報文攜帶有跟蹤ID,生成的跟蹤數(shù)據(jù)中增加節(jié)點(diǎn)parent_id,形成父子關(guān)系,將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;所述通訊報文的通訊方式為http或者socket;

所述調(diào)用單元,用于當(dāng)任意一業(yè)務(wù)接口調(diào)用另一個業(yè)務(wù)接口時,將攜帶所述跟蹤ID的通訊報文發(fā)送給另一業(yè)務(wù)接口;

所述解析單元,用于解析所述通訊報文,檢查是否攜帶有跟蹤ID;

所述讀取顯示單元,用于周期性地將每個業(yè)務(wù)接口對應(yīng)的緩存中的跟蹤數(shù)據(jù)根據(jù)先進(jìn)先出方式取出,根據(jù)所述跟蹤數(shù)據(jù)中的節(jié)點(diǎn)和跟蹤ID確定每一個調(diào)用鏈的層級依賴關(guān)系;所述跟蹤數(shù)據(jù)還包括調(diào)用發(fā)起時間、發(fā)起IP、發(fā)起服務(wù)的服務(wù)名稱、Span名稱、調(diào)用結(jié)束時間;

所述跟蹤數(shù)據(jù)生成單元,如果所述通訊報文沒有攜帶跟蹤ID,則不參與訪問鏈路跟蹤關(guān)系。

上述方案中,所述跟蹤數(shù)據(jù)生成單元,如果所述通訊報文沒有攜帶父級跟蹤ID,則生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中。

與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:

本發(fā)明數(shù)據(jù)讀寫快,同時利用報文格式自定義的方便,使調(diào)用鏈路追蹤變得簡單易用,能夠?qū)崿F(xiàn)上下級調(diào)用關(guān)系、請求次數(shù)、執(zhí)行時間,通過匯總統(tǒng)計能夠清晰地實(shí)現(xiàn)調(diào)用關(guān)系拓?fù)鋱D。

附圖說明

圖1為本發(fā)明實(shí)施例提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法的流程圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

本發(fā)明實(shí)施例提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法,如圖1所示,該方法通過以下步驟實(shí)現(xiàn):

步驟101:任意一業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;

具體地,所述跟蹤數(shù)據(jù)還包括調(diào)用發(fā)起時間、發(fā)起IP、發(fā)起服務(wù)的服務(wù)名稱、Span名稱、調(diào)用結(jié)束時間。

例如,業(yè)務(wù)接口A生成跟蹤數(shù)據(jù)(包含跟蹤ID),將數(shù)據(jù)寫入系統(tǒng)緩存中,同時把跟蹤ID放到全局變量中。

步驟102:當(dāng)任意一業(yè)務(wù)接口調(diào)用另一個業(yè)務(wù)接口時,將攜帶所述跟蹤ID的通訊報文發(fā)送給另一業(yè)務(wù)接口,所述另一接口解出通訊報文,檢查是否攜帶有跟蹤ID,如果攜帶有跟蹤ID,生成的跟蹤數(shù)據(jù)中增加節(jié)點(diǎn)parent_id,形成父子關(guān)系,將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;

如果所述通訊報文沒有攜帶父級跟蹤ID,則所述另一業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中。

具體地,所述通訊報文的通訊方式為http或者socket。

例如,業(yè)務(wù)接口A調(diào)用接口B時,把跟蹤ID帶到通訊報文中,業(yè)務(wù)接口B收到請求后,解出通訊報文,檢查是否帶有跟蹤ID,如果帶有跟蹤ID,生成的跟蹤數(shù)據(jù)中增加節(jié)點(diǎn)parent_id,形成父子關(guān)系,將數(shù)據(jù)寫入當(dāng)前操作系統(tǒng)緩存中,同時把跟蹤ID放到全局變量中;業(yè)務(wù)接口C處理方式與業(yè)務(wù)接口B相同。

步驟103:周期性地將每個業(yè)務(wù)接口對應(yīng)的緩存中的跟蹤數(shù)據(jù)根據(jù)先進(jìn)先出方式取出,根據(jù)所述跟蹤數(shù)據(jù)中的節(jié)點(diǎn)和跟蹤ID確定每一個調(diào)用鏈的層級依賴關(guān)系并且進(jìn)行顯示。

具體地,將每個系統(tǒng)中的緩存數(shù)據(jù)按先進(jìn)先出的方式取出來,統(tǒng)一寫入kafka分布式消息系統(tǒng)中,用zipkin將kafka分布式消息系統(tǒng)中的數(shù)據(jù)取出來,寫入到Elasticsearch中分布式存儲,用zipkin-ui程序把Elasticsearch中的數(shù)據(jù)讀取出來,并做調(diào)用鏈上下級依賴關(guān)系顯示。

實(shí)施例:

本發(fā)明實(shí)施例提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)方法,該方法通過以下步驟實(shí)現(xiàn):

1.接口調(diào)用方發(fā)起調(diào)用時,生成TraceID和Span跟蹤數(shù)據(jù),所述Span跟蹤數(shù)據(jù)包括:調(diào)用發(fā)起時間、發(fā)起IP、發(fā)起服務(wù)的服務(wù)名稱、Span名稱、調(diào)用結(jié)束時間。

2.把Span跟蹤數(shù)據(jù)寫入到系統(tǒng)緩存中,由程序直接操作系統(tǒng)的System V IPC。

3.調(diào)用接口時,把TraceID與其它數(shù)據(jù)一起組裝到通訊報文中傳輸,通訊方式支持http,socket,報文內(nèi)容格式可自行定義,如:Json\Protobuf\Thrift。

4.接口接收方收到TraceID后,再生成新的Span,同時在Span上增加parentId節(jié)點(diǎn)并賦上TraceID的值,與上一個Span建立關(guān)聯(lián)關(guān)系。

5.上一接口再調(diào)另一接口,處理方式將與前面步驟相同。

6.每臺服務(wù)器不間斷的執(zhí)行緩存數(shù)據(jù)(System V)的讀取操作,并統(tǒng)一寫入到kafka分布式消息服務(wù)中。

7.zipkin程序?qū)崟r的從kafka分布式消息服務(wù)把數(shù)據(jù)讀取出來,進(jìn)行整理,整理完數(shù)據(jù)寫入到Elasticsearch存儲,采用Elasticsearch存儲的優(yōu)勢是它具有搜索引擎機(jī)制,數(shù)據(jù)讀取檢索快,支持分布式存儲。

8.zipkin-ui程序?qū)崟r的檢索Elasticsearch的數(shù)據(jù),并在界面上展示出來每一個調(diào)用鏈的層級依賴關(guān)系,執(zhí)行時長。

本發(fā)明實(shí)施例還提供一種非入侵式的訪問鏈路跟蹤實(shí)現(xiàn)系統(tǒng),該系統(tǒng)包括:跟蹤數(shù)據(jù)生成單元、調(diào)用單元、解析單元、讀取顯示單元;

所述跟蹤數(shù)據(jù)生成單元,用于針對任意一業(yè)務(wù)接口生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;還用于如果所述通訊報文攜帶有跟蹤ID,生成的跟蹤數(shù)據(jù)中增加節(jié)點(diǎn)parent_id,形成父子關(guān)系,將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中;

所述調(diào)用單元,用于當(dāng)任意一業(yè)務(wù)接口調(diào)用另一個業(yè)務(wù)接口時,將攜帶所述跟蹤ID的通訊報文發(fā)送給另一業(yè)務(wù)接口;

所述解析單元,用于解析所述通訊報文,檢查是否攜帶有跟蹤ID;

所述讀取顯示單元,用于周期性地將每個業(yè)務(wù)接口對應(yīng)的緩存中的跟蹤數(shù)據(jù)根據(jù)先進(jìn)先出方式取出,根據(jù)所述跟蹤數(shù)據(jù)中的節(jié)點(diǎn)和跟蹤ID確定每一個調(diào)用鏈的層級依賴關(guān)系并且進(jìn)行顯示。

所述跟蹤數(shù)據(jù)還包括調(diào)用發(fā)起時間、發(fā)起IP、發(fā)起服務(wù)的服務(wù)名稱、Span名稱、調(diào)用結(jié)束時間。

所述通訊報文的通訊方式為http或者socket。

所述跟蹤數(shù)據(jù)生成單元,如果所述通訊報文沒有攜帶跟蹤ID,則不參與訪問鏈路跟蹤關(guān)系。

所述跟蹤數(shù)據(jù)生成單元,如果所述通訊報文沒有攜帶父級跟蹤ID,則生成包含跟蹤ID的跟蹤數(shù)據(jù),將所述跟蹤數(shù)據(jù)寫入緩存中同時把所述跟蹤ID存儲到全局變量中。

以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
喀喇| 且末县| 阳春市| 合阳县| 淳化县| 赞皇县| 尼玛县| 凉城县| 西昌市| 昌宁县| 永城市| 汝南县| 荥经县| 铜陵市| 舒兰市| 水城县| 荔浦县| 澜沧| 潍坊市| 绵竹市| 罗定市| 仲巴县| 钟山县| 都江堰市| 民乐县| 左云县| 安达市| 福建省| 宜州市| 铁岭市| 成武县| 从江县| 锡林郭勒盟| 南丰县| 富民县| 彭水| 玉屏| 英超| 奉化市| 定襄县| 嵩明县|