• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于動(dòng)態(tài)采樣策略的微服務(wù)鏈路追蹤方法①

      2022-02-15 06:40:24顏復(fù)海李培軍張澤華陳文輝許舒人
      關(guān)鍵詞:插樁跨距調(diào)用

      顏復(fù)海,李培軍,張澤華,陳文輝,許舒人

      1(中國(guó)科學(xué)院 軟件研究所 軟件工程技術(shù)研究開(kāi)發(fā)中心,北京 100190)

      2(中國(guó)科學(xué)院大學(xué),北京 100490)

      3(廈門物之聯(lián)智能科技有限公司,廈門 361022)

      1 引言

      由于具備高可用性、支持動(dòng)態(tài)伸縮與分布式部署等特點(diǎn),微服務(wù)架構(gòu)已成為云原生時(shí)代設(shè)計(jì)與構(gòu)建大型分布式應(yīng)用系統(tǒng)的主要技術(shù)架構(gòu)之一.在微服務(wù)架構(gòu)中,應(yīng)用系統(tǒng)被劃分為多個(gè)高內(nèi)聚、功能單一、可獨(dú)立部署的服務(wù),并通過(guò)服務(wù)之間的輕量級(jí)遠(yuǎn)程調(diào)用來(lái)構(gòu)建復(fù)雜的業(yè)務(wù)邏輯[1,2].

      可觀察性是指系統(tǒng)可由外部輸出推斷其內(nèi)部狀態(tài)的程度.對(duì)微服務(wù)架構(gòu)而言,當(dāng)服務(wù)數(shù)量龐大時(shí),服務(wù)之間的調(diào)用關(guān)系變得復(fù)雜,使得故障分析與排查的困難程度顯著上升,因此微服務(wù)架構(gòu)也面臨著如何提高可觀察性的問(wèn)題.分布式鏈路追蹤(distributed tracing)是提升微服務(wù)架構(gòu)的可觀察性的關(guān)鍵技術(shù)之一,其通過(guò)收集應(yīng)用系統(tǒng)處理服務(wù)請(qǐng)求的詳細(xì)信息來(lái)為系統(tǒng)行為建模,以幫助開(kāi)發(fā)與運(yùn)維人員獲得系統(tǒng)運(yùn)行時(shí)的全局視角[3].

      應(yīng)用系統(tǒng)對(duì)一次外部請(qǐng)求的完整處理稱為一次執(zhí)行(execution).以一次執(zhí)行中是否出現(xiàn)異常為依據(jù)可將該次執(zhí)行劃分為正常執(zhí)行或異常執(zhí)行.跟蹤(trace)是對(duì)執(zhí)行的記錄,一個(gè)跟蹤對(duì)應(yīng)一次執(zhí)行,其內(nèi)容包含該次執(zhí)行中各服務(wù)之間的調(diào)用關(guān)系以及各服務(wù)處理調(diào)用請(qǐng)求的詳情與結(jié)果.跟蹤由插樁代碼生成并上報(bào)至負(fù)責(zé)匯總處理的遠(yuǎn)程進(jìn)程.

      出于減小對(duì)應(yīng)用系統(tǒng)的性能影響、節(jié)約存儲(chǔ)資源等方面的考慮,在分布式鏈路追蹤中通過(guò)特定的采樣策略來(lái)只收集一部分執(zhí)行的跟蹤[3–5].常見(jiàn)的開(kāi)源鏈路追蹤系統(tǒng)或框架實(shí)現(xiàn)的采樣策略有固定采樣、概率采樣、限速采樣、自適應(yīng)采樣等[6–8].以上采樣策略雖然實(shí)現(xiàn)簡(jiǎn)單且有效避免了插樁代碼對(duì)應(yīng)用系統(tǒng)造成較大工作負(fù)載,但是存在收集過(guò)多無(wú)助于故障分析與排查等任務(wù)的正常執(zhí)行的跟蹤等問(wèn)題[4,5].以概率采樣為例,收集的跟蹤當(dāng)中各類執(zhí)行的跟蹤占比與其出現(xiàn)的概率一致,因此高頻的正常執(zhí)行的跟蹤占比將遠(yuǎn)大于低頻的異常執(zhí)行.但是對(duì)于故障分析這一需求而言,異常執(zhí)行的跟蹤占比越大、跟蹤數(shù)量越多則提供給系統(tǒng)管理人員進(jìn)行故障分析等任務(wù)的信息量越大[4,5].

      針對(duì)以上問(wèn)題,本文提出一種動(dòng)態(tài)采樣策略:通過(guò)采樣策略樹(shù)解決如何自動(dòng)調(diào)整跟蹤采樣率的問(wèn)題;通過(guò)執(zhí)行軌跡圖解決如何快速準(zhǔn)確地找到需要調(diào)整跟蹤采樣率的服務(wù)的問(wèn)題;通過(guò)以上兩種數(shù)據(jù)結(jié)構(gòu)的協(xié)作提高異常執(zhí)行的跟蹤占比.基于以上工作,本文實(shí)現(xiàn)了原型系統(tǒng)并通過(guò)實(shí)驗(yàn)對(duì)動(dòng)態(tài)采樣策略的有效性進(jìn)行了驗(yàn)證.

      2 基于采樣策略樹(shù)的跟蹤采樣率自動(dòng)調(diào)整方法

      2.1 問(wèn)題分析

      任一執(zhí)行類型的調(diào)用鏈路中最先處理外部請(qǐng)求的服務(wù)稱為該類執(zhí)行的入口服務(wù).提高入口服務(wù)的跟蹤采樣率將會(huì)增加其對(duì)應(yīng)執(zhí)行類型的跟蹤數(shù)量,從而消耗更多的存儲(chǔ)資源.若要提高存儲(chǔ)資源的利用率,那么當(dāng)提升某一入口服務(wù)的跟蹤采樣率時(shí)就應(yīng)適當(dāng)減小其他部分入口服務(wù)的跟蹤采樣率,使得跟蹤數(shù)量保持動(dòng)態(tài)平衡.本文設(shè)計(jì)了一種稱為采樣策略樹(shù)的數(shù)據(jù)結(jié)構(gòu)來(lái)解決跟蹤采樣率的自動(dòng)調(diào)整問(wèn)題.

      2.2 采樣策略樹(shù)的定義

      定義1.一棵m階的采樣策略樹(shù)是滿足以下性質(zhì)的m叉樹(shù):

      1)樹(shù)中任一節(jié)點(diǎn)至多有m個(gè)子節(jié)點(diǎn);

      2)除根節(jié)點(diǎn)外,其他節(jié)點(diǎn)要么沒(méi)有子節(jié)點(diǎn),要么子節(jié)點(diǎn)數(shù)大于1.

      圖1所示為采樣策略樹(shù)的樹(shù)節(jié)點(diǎn)結(jié)構(gòu).父節(jié)點(diǎn)指針為指向該樹(shù)節(jié)點(diǎn)的父節(jié)點(diǎn)的指針.若樹(shù)節(jié)點(diǎn)為根節(jié)點(diǎn),則父節(jié)點(diǎn)指針為空.子孫葉子節(jié)點(diǎn)計(jì)數(shù)為以當(dāng)前樹(shù)節(jié)點(diǎn)為根節(jié)點(diǎn)的m叉樹(shù)中所有葉子節(jié)點(diǎn)的計(jì)數(shù).樹(shù)中只保存入口服務(wù).標(biāo)簽為當(dāng)前樹(shù)節(jié)點(diǎn)保存的服務(wù)的唯一標(biāo)識(shí)符.所有服務(wù)只保存在葉子節(jié)點(diǎn)中,因此枝干節(jié)點(diǎn)的標(biāo)簽的值為空.子節(jié)點(diǎn)指針集為固定容量的集合,用于保存當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)的指針,其底層由一個(gè)指針哈希表和一個(gè)雙向鏈表來(lái)實(shí)現(xiàn).

      圖1 采樣策略樹(shù)的樹(shù)節(jié)點(diǎn)結(jié)構(gòu)

      2.3 采樣策略樹(shù)的操作

      采樣策略樹(shù)支持的操作有插入、剪枝、生成和提升等.插入操作將新服務(wù)的葉子節(jié)點(diǎn)插入到離根節(jié)點(diǎn)盡可能近的位置.剪枝操作將某一服務(wù)對(duì)應(yīng)的葉子節(jié)點(diǎn)從樹(shù)中刪除.

      生成操作以路徑概率積作為樹(shù)中服務(wù)的跟蹤采樣率.路徑概率積的定義如下:

      定義2.設(shè)葉子節(jié)點(diǎn)l且葉子節(jié)點(diǎn)的父節(jié)點(diǎn)不為根節(jié)點(diǎn)r,其到根節(jié)點(diǎn)的路徑為s=(l,n1,n2,···,nk,r),ni為路徑上的枝干節(jié)點(diǎn),則該葉子節(jié)點(diǎn)的路徑概率積為:

      其中,Nx為節(jié)點(diǎn)x的子節(jié)點(diǎn)數(shù)量;若葉子節(jié)點(diǎn)l的父節(jié)點(diǎn)為根節(jié)點(diǎn),則該節(jié)點(diǎn)的路徑概率積為:

      提升操作將提升樹(shù)中服務(wù)的跟蹤采樣率,其偽代碼如算法1 所示.提升操作內(nèi)部包含了降級(jí)操作,遭到降級(jí)的葉子節(jié)點(diǎn),其保存的服務(wù)的跟蹤采樣率也隨之降低.

      算法1.采樣策略樹(shù)的提升操作算法輸入:葉子節(jié)點(diǎn) leafNode 1.function Promote(leafNode)2.if leafNode的父節(jié)點(diǎn)為根節(jié)點(diǎn) then 3.return 4.end if 5.grandparent:=leafNode的祖父節(jié)點(diǎn)6.parent:=leafNode的父節(jié)點(diǎn)7.從parent的子節(jié)點(diǎn)集合中刪除leafNode 8.if grandparent的子節(jié)點(diǎn)數(shù)小于最大值 then 9.將leafNode 添加到 grandparent的子節(jié)點(diǎn)集中10.將leafNode的父節(jié)點(diǎn)指針指向 grandparent 11.if parent 只剩一個(gè)子節(jié)點(diǎn) then 12.將parent 唯一的子節(jié)點(diǎn)添加到parent的父節(jié)點(diǎn)的子節(jié)點(diǎn)集合當(dāng)中,刪除parent//路徑壓縮13.else 14.更新parent的子孫葉子節(jié)點(diǎn)計(jì)數(shù)值15.end if 16.else 17.lruNode:=grandparent的最近最久未使用子節(jié)點(diǎn)18.if parent的子節(jié)點(diǎn)數(shù)大于2 then 19.Merge(lruNode,leafNode)20.else 21.替換lruNode 與leafNode的位置22.enf if 23.更新parent的子孫葉子節(jié)點(diǎn)計(jì)數(shù)值24.end if 25.end function 26.function Merge(a,b)27.在a的父節(jié)點(diǎn)與a 之間插入一個(gè)新的枝干節(jié)點(diǎn)28.將a,b的父節(jié)點(diǎn)指針指向新的枝干節(jié)點(diǎn)29.將a,b 移動(dòng)到新枝干節(jié)點(diǎn)的子節(jié)點(diǎn)集合當(dāng)中30.end function

      圖2為一棵3 階采樣策略樹(shù)的發(fā)生降級(jí)的提升操作示例.一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)以從左到右的順序表示其最近被使用過(guò)的時(shí)間順序,即最右邊的為最近最久未被使用的子節(jié)點(diǎn).需要被提升的服務(wù)為D.由于grandparent的子節(jié)點(diǎn)數(shù)量已達(dá)最大值3,因此需要降級(jí)該節(jié)點(diǎn)的最近最久未被使用的子節(jié)點(diǎn)C,使其與D 交換位置.

      圖2 發(fā)生降級(jí)的提升操作

      2.4 跟蹤采樣率的自動(dòng)調(diào)整

      給定服務(wù)并找到對(duì)應(yīng)的葉子節(jié)點(diǎn)之后,提升操作將改變?cè)撊~子節(jié)點(diǎn)處于樹(shù)中的位置使其離根節(jié)點(diǎn)更近.根據(jù)路徑概率積的定義可推導(dǎo)出:一個(gè)服務(wù)的葉子節(jié)點(diǎn)被提升之后,該服務(wù)根據(jù)路徑概率積計(jì)算所得的跟蹤采樣率隨之提高.提升操作可能觸發(fā)降級(jí)操作,即某一服務(wù)的葉子節(jié)點(diǎn)被下放到樹(shù)的更深處,因此被降級(jí)的葉子節(jié)點(diǎn)的服務(wù)的跟蹤采樣率會(huì)隨之降低.跟蹤采樣率的變化方向與其是否被提升有關(guān)且執(zhí)行提升操作的條件可自行設(shè)定.跟蹤采樣率變化的幅度與樹(shù)結(jié)構(gòu)的變化有關(guān),具體數(shù)值取決于所涉及樹(shù)節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù).

      在提升操作中加入降級(jí)操作是為了提高存儲(chǔ)資源的利用率.一個(gè)服務(wù)的吞吐量和跟蹤采樣率共同決定了以該服務(wù)作為入口服務(wù)的執(zhí)行類型的跟蹤數(shù)量.當(dāng)吞吐量不變時(shí),跟蹤采樣率與跟蹤數(shù)量呈正相關(guān).根據(jù)路徑概率積的定義可推導(dǎo)出:采樣策略樹(shù)中所有服務(wù)根據(jù)路徑概率積計(jì)算所得的跟蹤采樣率總和為1.因此,當(dāng)提高其中一個(gè)服務(wù)的跟蹤采樣率時(shí),必定導(dǎo)致樹(shù)中另外一部分服務(wù)的跟蹤采樣率的降低,使得跟蹤數(shù)量保持動(dòng)態(tài)平衡,從而有效提高存儲(chǔ)資源利用率.

      3 基于流言協(xié)議的執(zhí)行軌跡圖全局更新算法

      3.1 問(wèn)題分析

      入口服務(wù)中的插樁代碼做出采樣決策并將其寫入請(qǐng)求上下文之后,采樣決策會(huì)隨著調(diào)用鏈路傳播給該入口服務(wù)遞歸調(diào)用的其他服務(wù),并且各服務(wù)根據(jù)請(qǐng)求上下文中的采樣決策判斷是否上報(bào)跟蹤,因此任一服務(wù)的跟蹤采樣率等于其入口服務(wù)的跟蹤采樣率.當(dāng)某一非入口服務(wù)出現(xiàn)異常時(shí),要提升其跟蹤采樣率以提高異常執(zhí)行的跟蹤占比,則需找到與之對(duì)應(yīng)的入口服務(wù).針對(duì)以上問(wèn)題,本文利用執(zhí)行軌跡圖這一數(shù)據(jù)結(jié)構(gòu)來(lái)刻畫服務(wù)之間的調(diào)用關(guān)系.

      3.2 執(zhí)行軌跡圖的定義

      定義3.執(zhí)行軌跡圖G=(V,E)是一個(gè)有向圖,其中,節(jié)點(diǎn)集V表示服務(wù)集合,邊集E表示調(diào)用關(guān)系集合,邊的箭頭指向被調(diào)用的服務(wù).

      圖3為一個(gè)執(zhí)行軌跡圖示例.A為入口服務(wù),且A 調(diào)用服務(wù)B 與服務(wù)C 來(lái)完成其本身的請(qǐng)求處理.圖中其他服務(wù)的調(diào)用關(guān)系與之類似.

      圖3 執(zhí)行軌跡圖示例

      3.3 全局更新算法

      執(zhí)行軌跡圖的更新是一個(gè)動(dòng)態(tài)的過(guò)程,即每次發(fā)現(xiàn)新的服務(wù)或調(diào)用關(guān)系,就把表示新服務(wù)的頂點(diǎn)、表示新調(diào)用關(guān)系的邊添加到執(zhí)行軌跡圖當(dāng)中.基于執(zhí)行軌跡圖,在給定任一服務(wù)的前提下,可通過(guò)圖搜索算法快速找到該服務(wù)對(duì)應(yīng)的入口服務(wù).在實(shí)際應(yīng)用中,出于容災(zāi)和性能上的考慮,需要冗余地部署跟蹤收集進(jìn)程,因此需要在多個(gè)跟蹤收集進(jìn)程之間同步執(zhí)行軌跡圖,使得所有執(zhí)行軌跡圖的副本能夠反映各服務(wù)之間的實(shí)時(shí)調(diào)用關(guān)系.本文提出一種基于流言協(xié)議的執(zhí)行軌跡圖全局同步算法以解決上述問(wèn)題.

      圖4為本文用到的基于流言協(xié)議的組件:種子、注冊(cè)中心,以及兩者的通信關(guān)系.注冊(cè)中心用于種子發(fā)現(xiàn),即當(dāng)新的種子加入時(shí)向注冊(cè)中心登記其路由信息.種子定期向注冊(cè)中心發(fā)送心跳信號(hào)并獲得所有其他種子的實(shí)時(shí)路由信息,以及將新調(diào)用關(guān)系封裝成消息散播給其他種子.在實(shí)現(xiàn)中,每個(gè)跟蹤收集進(jìn)程都會(huì)維護(hù)一個(gè)種子,而注冊(cè)中心是全局唯一的.當(dāng)跟蹤收集進(jìn)程發(fā)現(xiàn)新調(diào)用關(guān)系時(shí),會(huì)向本地的種子發(fā)起消息散播請(qǐng)求,將新調(diào)用關(guān)系同步給其他跟蹤收集進(jìn)程中的執(zhí)行軌跡圖.執(zhí)行軌跡圖的全局更新算法偽代碼如算法2 所示.算法2 參照了流言協(xié)議的SIR 模型[9],即每個(gè)種子對(duì)于任一消息在任一時(shí)刻只對(duì)應(yīng)以下3 種狀態(tài)之一:S (susceptible),未收到該消息;I (infected),已收到該消息且正在參與該消息的散播過(guò)程;R (removed),已收到該消息且已退出該消息的散播過(guò)程.

      圖4 基于流言協(xié)議的組件及通信關(guān)系

      算法2.執(zhí)行軌跡圖的全局更新算法輸入:新調(diào)用關(guān)系 newRel 1.function Synchronize(newRel)2.msgID:=由snowflake 算法生成全局唯一消息ID 3.msg:=(msgID,newRel)//消息格式4.Monger(msg)5.end function 6.function Monger(msg)7.if not msg的ID 存在于LRU 緩存中 then 8.提取調(diào)用關(guān)系,更新執(zhí)行軌跡圖9.將msg的ID 放入LRU 緩存10.end if 11.if not 本地節(jié)點(diǎn)對(duì)msg 處于R 狀態(tài) then 12.peers:=隨機(jī)選取n 個(gè)對(duì)等節(jié)點(diǎn)13.for each 對(duì)等節(jié)點(diǎn)peer in peers:14.以msg為參數(shù),遠(yuǎn)程調(diào)用peer的Monger 方法15.end for 16.以概率p 轉(zhuǎn)換成R 狀態(tài),否則為I 狀態(tài)17.end if 18.end function

      4 原型系統(tǒng)

      4.1 系統(tǒng)架構(gòu)

      本文參考開(kāi)源分布式鏈路追蹤系統(tǒng)Jaeger的數(shù)據(jù)模型與架構(gòu)并參照OpenTracing 規(guī)范[10]實(shí)現(xiàn)了原型系統(tǒng),其系統(tǒng)架構(gòu)如圖5所示.插樁代碼負(fù)責(zé)生成、上報(bào)跟蹤以及周期性地向配置服務(wù)器拉取采樣策略.代理負(fù)責(zé)為插樁代碼屏蔽配置服務(wù)器和收集器的路由信息.配置服務(wù)器負(fù)責(zé)處理采樣策略的拉取請(qǐng)求以及更新采樣策略的請(qǐng)求并且通過(guò)策略管理器維護(hù)全局唯一的采樣策略樹(shù).注冊(cè)中心用于種子發(fā)現(xiàn),維護(hù)所有種子的路由信息.種子用于執(zhí)行全局更新算法.收集器負(fù)責(zé)收集、分析以及持久化跟蹤.

      圖5 原型系統(tǒng)的架構(gòu)

      4.2 跟蹤收集過(guò)程

      跨距(span)是跟蹤的基本組成單元,一個(gè)跨距記錄一個(gè)服務(wù)處理一次請(qǐng)求處理的詳細(xì)信息以及調(diào)用關(guān)系.收集一個(gè)跟蹤即收集該跟蹤的所有跨距.跟蹤收集的詳細(xì)過(guò)程如下:

      (1)當(dāng)外部請(qǐng)求到達(dá)應(yīng)用系統(tǒng)時(shí),入口服務(wù)中的插樁代碼將做出采樣決策并將其寫入請(qǐng)求上下文使其在調(diào)用鏈路中傳播;

      (2)所有服務(wù)中的插樁代碼都將在其嵌入的服務(wù)處理請(qǐng)求之前分析請(qǐng)求上下文并創(chuàng)建一個(gè)跨距,且請(qǐng)求上下文中的采樣決策會(huì)被寫入跨距上下文;

      (3)待請(qǐng)求處理完成之后,插樁代碼將根據(jù)跨距上下文中的采樣決策判斷是否上報(bào)該跨距,若執(zhí)行采樣則將跨距發(fā)送至代理,再由代理上報(bào)至收集器;

      (4)收集器分析跨距獲得調(diào)用關(guān)系,判斷是否為新調(diào)用關(guān)系,若為新調(diào)用關(guān)系則執(zhí)行全局更新算法;

      (5)收集器調(diào)用評(píng)估器判斷該次執(zhí)行是否為預(yù)先定義的執(zhí)行類型,若是則向配置服務(wù)器發(fā)送請(qǐng)求以提升該執(zhí)行的入口服務(wù)的跟蹤采樣率;

      (6)收集器將跨距保存至數(shù)據(jù)庫(kù)中.

      4.3 采樣策略拉取過(guò)程

      插樁代碼周期性地發(fā)送拉取采樣策略的請(qǐng)求,該請(qǐng)求包含兩個(gè)參數(shù):服務(wù)唯一標(biāo)識(shí)符和該服務(wù)從上一次發(fā)送請(qǐng)求到目前為止這一時(shí)間段內(nèi)的每秒請(qǐng)求數(shù),即QPS (request per second)值.

      配置服務(wù)器為所有入口服務(wù)維護(hù)一個(gè)QPS 值的哈希表.當(dāng)接收到采樣策略拉取請(qǐng)求時(shí),配置服務(wù)器首先會(huì)用參數(shù)中的QPS 更新該哈希表,然后通過(guò)以下等式計(jì)算采樣率:

      其中,Osst為采樣策略樹(shù)的生成操作的路徑概率積計(jì)算結(jié)果,α ∈(0,+∞)為縮放因子,Smin為最小采樣率,Wqps為QPS 權(quán)重函數(shù)的輸出,其計(jì)算方式如下:

      其中,qi表示第i個(gè)入口服務(wù)的實(shí)時(shí)QPS 值,E為入口服務(wù)數(shù).

      計(jì)算所得的采樣率會(huì)被封裝成概率采樣為底層采樣方式的采樣策略作為響應(yīng)返回給插樁代碼,由插樁代碼分析響應(yīng)結(jié)果并據(jù)此更新本地的采樣策略.

      4.4 采樣策略樹(shù)與執(zhí)行軌跡圖的協(xié)作過(guò)程

      為評(píng)估器設(shè)置評(píng)估條件作為判斷HTTP 服務(wù)的某次執(zhí)行是否為異常執(zhí)行的依據(jù):HTTP_STATUS_CODE≠200.

      圖6所示為HTTP 服務(wù)出現(xiàn)一次異常執(zhí)行時(shí)采樣策略樹(shù)與執(zhí)行軌跡圖的協(xié)作過(guò)程.

      圖6 采樣策略樹(shù)與執(zhí)行軌跡圖的協(xié)作過(guò)程

      (1)分析調(diào)用服務(wù)E 時(shí)由插樁代碼生成的跨距,調(diào)用評(píng)估器分析其標(biāo)簽,發(fā)現(xiàn)其滿足評(píng)估條件;

      (2)調(diào)用執(zhí)行軌跡圖的查詢接口,由其利用圖搜索算法找到服務(wù)E的入口服務(wù),即服務(wù)A;

      (3)調(diào)用一棵2 階采樣策略樹(shù)的提升操作接口,提升服務(wù)A的葉子節(jié)點(diǎn)并降級(jí)服務(wù)X的葉子節(jié)點(diǎn)以提升服務(wù)A的跟蹤采樣率、降低服務(wù)X的跟蹤采樣率.

      實(shí)際上執(zhí)行類型是高度可定制的,可根據(jù)不同的任務(wù)與場(chǎng)景為評(píng)估器設(shè)置不同的評(píng)估條件,并由插樁代碼在預(yù)設(shè)的異常情況發(fā)生時(shí)為跨距設(shè)置與評(píng)估條件對(duì)應(yīng)的標(biāo)簽名稱以及標(biāo)簽值.

      5 實(shí)驗(yàn)驗(yàn)證與分析

      5.1 實(shí)驗(yàn)方案

      本文在3 臺(tái)主機(jī)上部署Kubernetes 集群、Istio 服務(wù)網(wǎng)格并開(kāi)發(fā)與部署對(duì)應(yīng)8 個(gè)執(zhí)行類型的32 個(gè)HTTP微服務(wù)作為模擬云環(huán)境部署的實(shí)驗(yàn)環(huán)境.每臺(tái)主機(jī)的操作系統(tǒng)為CentOS 7.9,處理器為Inter(R) Xeon(R) E5-2620 @ 2.00 GHz,內(nèi)存容量為32 GB,Kubernetes 版本為1.19.0,Istio 版本為1.7.本文使用基于Python 開(kāi)發(fā)的壓測(cè)工具Locust 來(lái)模擬多用戶的并發(fā)請(qǐng)求.在實(shí)驗(yàn)中以容器組(pod)的形式冗余部署了3 個(gè)收集器.

      本文著重關(guān)注兩個(gè)實(shí)驗(yàn)指標(biāo):任一時(shí)間段內(nèi)各執(zhí)行類型的跟蹤占比和跟蹤數(shù).本文將比較固定采樣、概率采樣、限速采樣、自適應(yīng)采樣以及動(dòng)態(tài)采樣的實(shí)際表現(xiàn).以上各采樣策略的實(shí)驗(yàn)參數(shù)如表1所示.

      表1 實(shí)驗(yàn)中各采樣策略的參數(shù)

      在各采樣策略的實(shí)驗(yàn)中,每隔固定長(zhǎng)度的時(shí)間段則為某一類執(zhí)行注入故障且在對(duì)下一類執(zhí)行注入故障之前,修復(fù)上一類執(zhí)行的故障.注入的故障類型為內(nèi)部錯(cuò)誤,具體表現(xiàn)形式為調(diào)用服務(wù)所返回的HTTP 狀態(tài)碼為500,因此在實(shí)驗(yàn)中設(shè)定評(píng)估條件為:HTTP 狀態(tài)碼不等于200.當(dāng)插樁代碼捕捉到該異常時(shí)會(huì)將HTTP狀態(tài)碼以及對(duì)應(yīng)的值500 寫入跨距標(biāo)簽.

      5.2 實(shí)驗(yàn)結(jié)果

      各采樣策略的實(shí)驗(yàn)中跟蹤占比的變化情況如圖7–圖11所示.圖11表明在動(dòng)態(tài)采樣策略的實(shí)驗(yàn)中,對(duì)于任一時(shí)間段內(nèi)被注入故障的執(zhí)行類型的跟蹤占比顯著上升.各采樣策略的實(shí)驗(yàn)中的跟蹤數(shù)變化情況如圖12所示.在動(dòng)態(tài)采樣的實(shí)驗(yàn)中,各時(shí)間段內(nèi)被注入故障的執(zhí)行類型的入口服務(wù)的跟蹤采樣率顯著上升,其對(duì)應(yīng)的跟蹤數(shù)也顯著增多,但是由于同時(shí)降低了另一部分入口服務(wù)的跟蹤采樣率,因此任一時(shí)間段的跟蹤數(shù)相對(duì)于前一時(shí)間段沒(méi)有明顯地上升或下降,使得跟蹤數(shù)保持動(dòng)態(tài)平衡而異常執(zhí)行的跟蹤占比顯著上升,從而提高了存儲(chǔ)資源的利用率.

      圖7 固定采樣實(shí)驗(yàn)的跟蹤占比變化

      圖9 限速采樣實(shí)驗(yàn)的跟蹤占比變化

      圖10 自適應(yīng)采樣實(shí)驗(yàn)的跟蹤占比變化

      圖11 動(dòng)態(tài)采樣實(shí)驗(yàn)的跟蹤占比變化

      圖12 跟蹤數(shù)隨時(shí)間的變化情況

      實(shí)驗(yàn)結(jié)果表明,動(dòng)態(tài)采樣有效提升了任一時(shí)間段內(nèi)異常執(zhí)行的跟蹤占比并且高效利用了存儲(chǔ)資源.

      6 總結(jié)

      針對(duì)現(xiàn)有開(kāi)源分布式鏈路追蹤系統(tǒng)或框架的采樣策略存在的收集過(guò)多無(wú)助于故障分析等任務(wù)的正常執(zhí)行的跟蹤這一問(wèn)題,本文提出一種基于動(dòng)態(tài)采樣策略的微服務(wù)鏈路追蹤方法:通過(guò)基于采樣策略樹(shù)的跟蹤采樣率自動(dòng)調(diào)整方法解決了跟蹤采樣率的自動(dòng)調(diào)整問(wèn)題;通過(guò)基于流言協(xié)議的執(zhí)行軌跡圖全局更新算法解決了如何快速準(zhǔn)確地找到需要調(diào)整跟蹤采樣率的入口服務(wù)的問(wèn)題.實(shí)驗(yàn)結(jié)果表明,本文方法在任一時(shí)間段內(nèi)均有效地提升了異常執(zhí)行的跟蹤占比并且高效利用了存儲(chǔ)資源.

      猜你喜歡
      插樁跨距調(diào)用
      砂土中樁靴插樁對(duì)臨近筒型基礎(chǔ)的影響研究
      基于TXL的源代碼插樁技術(shù)研究
      核級(jí)工藝管道支撐跨距研究
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于性能分析的自適應(yīng)插樁框架
      CTC Global發(fā)布超高強(qiáng)度導(dǎo)線 適用大跨距重冰雪輸電項(xiàng)目
      設(shè)計(jì)時(shí)速120 km線路架空剛性懸掛接觸網(wǎng)跨距選擇
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      有關(guān)大跨距同軸孔系加工方法的研究
      肇源县| 长岛县| 乐安县| 高碑店市| 崇明县| 丹寨县| 和平县| 漯河市| 城市| 驻马店市| 长武县| 磐安县| 铅山县| 贞丰县| 衢州市| 台北市| 宜兰市| 兰西县| 潮安县| 灵武市| 大兴区| 睢宁县| 林州市| 乐至县| 滦南县| 卢湾区| 江达县| 两当县| 贵德县| 泾源县| 满城县| 黔南| 堆龙德庆县| 房产| 类乌齐县| 渭南市| 隆尧县| 蒲城县| 新和县| 兴安县| 福州市|