0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

調(diào)用鏈監(jiān)控原理淺析

Linux愛好者 ? 來源:YXQ ? 2019-08-09 17:42 ? 次閱讀

「 調(diào)用鏈監(jiān)控 」是在微服務(wù)興起后才有的一種新流行的監(jiān)控模式。因?yàn)樵谖覀儌鹘y(tǒng)單體應(yīng)用的項(xiàng)目中,不存在服務(wù)鏈/調(diào)用鏈的概念,所以也就根本沒有調(diào)用鏈監(jiān)控的需求了。

當(dāng)我們開始微服務(wù)架構(gòu)之后,我們的很多服務(wù)變成分布式的了,并且我們對服務(wù)進(jìn)行了拆分,拆分之后,用戶的一個請求進(jìn)來,會依次經(jīng)過不同的服務(wù)節(jié)點(diǎn)進(jìn)行處理,處理完成后再返回結(jié)果給用戶。那么在整個處理的鏈條中,如果有任何一個節(jié)點(diǎn)出現(xiàn)了延遲或者問題,都有可能導(dǎo)致最終的結(jié)果出現(xiàn)異常,有的時(shí)候不同的服務(wù)節(jié)點(diǎn)甚至是由不同的團(tuán)隊(duì)開發(fā)的、部署在不同的服務(wù)器上,那么在這么錯綜復(fù)雜的環(huán)境下,我們想要排查出是鏈條中的具體哪個服務(wù)節(jié)點(diǎn)出了問題,其實(shí)并不容易。

因此大家就想到了一個辦法,將這個請求經(jīng)過的每一個節(jié)點(diǎn)都記錄下來,形成一個完整的調(diào)用鏈監(jiān)控系統(tǒng),那么一旦發(fā)生請求調(diào)用異常的情況,只需要去排查這個調(diào)用鏈日志就能很清楚看到出錯的環(huán)節(jié)在哪兒。

一、為什么需要「 調(diào)用鏈監(jiān)控 」?

「調(diào)用鏈監(jiān)控」是在微服務(wù)架構(gòu)中非常重要的一環(huán)。它除了能幫助我們定位問題以外,還能幫助項(xiàng)目成員清晰的去了解項(xiàng)目部署結(jié)構(gòu),畢竟一個幾十上百的微服務(wù),相信在運(yùn)行時(shí)間久了之后,項(xiàng)目的結(jié)構(gòu)很可能就是下面圖片這樣了,在這種情況下,團(tuán)隊(duì)開發(fā)者甚至是架構(gòu)師都不一定能對項(xiàng)目的網(wǎng)絡(luò)結(jié)構(gòu)有很清晰的了解,那就更別談系統(tǒng)優(yōu)化了。

好了,說了這么多,咱們下面就來具體看一下「調(diào)用鏈監(jiān)控」的作用有哪些:

項(xiàng)目網(wǎng)絡(luò)拓?fù)鋱D:

我們可以根據(jù)「調(diào)用鏈監(jiān)控」中記錄的鏈路信息,給項(xiàng)目生成一張網(wǎng)絡(luò)調(diào)用的拓?fù)鋱D。通過這張圖,我們就可以知道系統(tǒng)中的各個服務(wù)之間的調(diào)用關(guān)系是怎樣的,以及系統(tǒng)依賴了哪些服務(wù)。并且還可以起到監(jiān)控全局服務(wù)的作用,便于架構(gòu)師掌握系統(tǒng)的狀態(tài)。

快速定位問題:

這個作用前面一直在講,微服務(wù)架構(gòu)下,問題定位就變得非常復(fù)雜了,一個請求可能會經(jīng)過多個服務(wù)節(jié)點(diǎn),那么有這么一套調(diào)用鏈監(jiān)控系統(tǒng)就能讓開發(fā)人員快速的定位到問題和相應(yīng)模塊。

優(yōu)化系統(tǒng):

優(yōu)化系統(tǒng)也是「調(diào)用鏈監(jiān)控」很重要的一個功能。因?yàn)槲覀冇涗浟苏埱笤谡{(diào)用鏈上每一個環(huán)節(jié)的信息,我們就可以通過這個來找出系統(tǒng)的瓶頸,做出針對性的優(yōu)化。還可以分析這個調(diào)用路徑是否合理,是否調(diào)用了不必要的服務(wù)節(jié)點(diǎn),是否有更近、響應(yīng)更快的服務(wù)節(jié)點(diǎn)。通過對調(diào)用鏈路的分析,我們就可以找出最優(yōu)質(zhì)的調(diào)用路徑,從而提高系統(tǒng)的性能。

提高團(tuán)隊(duì)成員自律:

上面都是系統(tǒng)層面的作用。但如果有了「調(diào)用鏈監(jiān)控」之后,對團(tuán)隊(duì)開發(fā)人員的幫助也是非常大的。因?yàn)閳F(tuán)隊(duì)所有成員都可以通過這個調(diào)用鏈監(jiān)控系統(tǒng)看到系統(tǒng)各個模塊的狀態(tài),相當(dāng)于給了開發(fā)同學(xué)一個放大鏡,以前開發(fā)同學(xué)完成項(xiàng)目交付后,只要沒有出現(xiàn)問題,可能不太關(guān)心系統(tǒng)的優(yōu)化,但是有這個調(diào)用鏈監(jiān)控系統(tǒng)之后,哪個模塊性能高,哪個模塊問題大,一眼就能分辨,通過這么一個看板,開發(fā)同學(xué)慢慢的也會對自己負(fù)責(zé)的模塊有更多的責(zé)任感,也會很自覺的去優(yōu)化自己的模塊。這種習(xí)慣的養(yǎng)成,對研發(fā)團(tuán)隊(duì)而言,非常的重要。

二、「 調(diào)用鏈監(jiān)控」的原理?

在調(diào)用鏈監(jiān)控系統(tǒng)中,有幾個核心概念需要了解:

Trace:

Trace是指一次請求調(diào)用的鏈路過程,trace id 是指這次請求調(diào)用的ID。在一次請求中,會在網(wǎng)絡(luò)的最開始生成一個全局唯一的用于標(biāo)識此次請求的trace id,這個trace id在這次請求調(diào)用過程中無論經(jīng)過多少個節(jié)點(diǎn)都會保持不變,并且在隨著每一層的調(diào)用不停的傳遞。最終,可以通過trace id將這一次用戶請求在系統(tǒng)中的路徑全部串起來。

Span:

Span是指一個模塊的調(diào)用過程,一般用span id來標(biāo)識。在一次請求的過程中會調(diào)用不同的節(jié)點(diǎn)/模塊/服務(wù),每一次調(diào)用都會生成一個新的span id來記錄。這樣,就可以通過span id來定位當(dāng)前請求在整個系統(tǒng)調(diào)用鏈中所處的位置,以及它的上下游節(jié)點(diǎn)分別是什么。

Annotation:

是指附屬信息,可以用于附屬在每一個Span上自定義的數(shù)據(jù)。

具體參考下圖:

從圖中可見,一次請求只有一個唯一的trace id=12345,在請求過程中的任何環(huán)節(jié)都不會改變。在這個請求的調(diào)用鏈中,SpanA調(diào)用了SpanB,然后SpanB又調(diào)用了SpanC和SpanD,每一次Span調(diào)用都會生成一個自己的span id,并且還會記錄自己的上級span id是誰。通過這些id,整個鏈路基本上就都能標(biāo)識出來了。

好了,了解了核心概念之后,我們再來看一下它具體是如何工作的,下面選取Twitter開源的Zipkin原理圖作為參考:

所有的調(diào)用鏈監(jiān)控系統(tǒng)都由 數(shù)據(jù)埋點(diǎn)采集、數(shù)據(jù)存儲處理、數(shù)據(jù)分析展示 幾大部分組成,Zipkin也不例外。

圖中左上角Reporter部分集成到應(yīng)用程序中采集數(shù)據(jù),并將數(shù)據(jù)上報(bào),由Collector進(jìn)行收集,然后通過Storage模塊負(fù)責(zé)存儲,落地到存儲系統(tǒng)中(Zipkin用的是Cassandra)。而API模塊是可以將處理后的數(shù)據(jù)提供對外服務(wù)的,UI模塊就是數(shù)據(jù)統(tǒng)計(jì)展示層了。

三、「 調(diào)用鏈監(jiān)控」的應(yīng)用?

了解了調(diào)用鏈監(jiān)控的原理之后,我們再看看目前業(yè)內(nèi)有哪些主流的開源調(diào)用鏈監(jiān)控系統(tǒng):

CAT

CAT是由大眾點(diǎn)評開源的一款調(diào)用鏈監(jiān)控系統(tǒng),基于JAVA開發(fā)的。有很多互聯(lián)網(wǎng)企業(yè)在使用,熱度非常高。它有一個非常強(qiáng)大和豐富的可視化報(bào)表界面,這一點(diǎn)其實(shí)對于一款調(diào)用鏈監(jiān)控系統(tǒng)而來非常的重要。在CAT提供的報(bào)表界面中有非常多的功能,幾乎能看到你想要的任何維度的報(bào)表數(shù)據(jù)。

CAT有個很大的優(yōu)勢就是處理的實(shí)時(shí)性,CAT里大部分系統(tǒng)是分鐘級統(tǒng)計(jì)。

CAT主要提供的報(bào)表有:

Transaction報(bào)表:

主要是監(jiān)控一段代碼運(yùn)行情況,如:運(yùn)行次數(shù)、QPS、錯誤次數(shù)、失敗率、響應(yīng)時(shí)間等。

Event報(bào)表:

主要是監(jiān)控一行代碼/一個事件運(yùn)行次數(shù),如:程序中某個事件運(yùn)行了多少次、錯誤了多少次等。Event報(bào)表的整體結(jié)構(gòu)與Transaction報(bào)表幾乎一樣,只缺少響應(yīng)時(shí)間的統(tǒng)計(jì)。

Problem報(bào)表:

主要是統(tǒng)計(jì)項(xiàng)目在運(yùn)行過程中出現(xiàn)的問題,根據(jù)Transaction與Event的數(shù)據(jù)分析出來系統(tǒng)可能出現(xiàn)的異常,比如訪問較慢等。

Heartbeat報(bào)表:

以一分鐘為周期,定期向服務(wù)端匯報(bào)當(dāng)前運(yùn)行的一些狀態(tài),如:JVM狀態(tài)、Memory、Thread等。

Business報(bào)表:

業(yè)務(wù)監(jiān)控報(bào)表,如訂單指標(biāo)、支付數(shù)據(jù)等業(yè)務(wù)指標(biāo)。

Open Zipkin

Zipkin由Twitter開源,支持的語言非常多,基于 Google Dapper 的論文設(shè)計(jì)而來,國內(nèi)外很多公司都在用,文檔資料也很豐富。在上面講原理的環(huán)節(jié)已經(jīng)介紹過了Zipkin,這里就不贅述了,下面是示例圖:

Naver Pinpoint

Pinpoint中的服務(wù)關(guān)系依賴圖做得非常棒,超出市面上任何一款產(chǎn)品。另外,Pinpoint因?yàn)椴捎米止?jié)碼增強(qiáng)方式去埋點(diǎn),所以在埋點(diǎn)的時(shí)候是不需要修改業(yè)務(wù)代碼的,非侵入式的,非常適合項(xiàng)目已經(jīng)完成之后再增加調(diào)用鏈監(jiān)控的時(shí)候去使用的方案。但是也是由于采用字節(jié)碼增強(qiáng)的方式,所以它目前僅支持JAVA語言。

以上,就是對微服務(wù)架構(gòu)中「 調(diào)用鏈監(jiān)控」的一些思考。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    7314

原文標(biāo)題:微服務(wù)架構(gòu)之「 調(diào)用鏈監(jiān)控 」

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    突破無線監(jiān)控網(wǎng)絡(luò)路高帶寬瓶頸

    的優(yōu)點(diǎn),無線技術(shù)才會在監(jiān)控領(lǐng)域被用戶越來越看重,也為監(jiān)控集成商提供了非常好的商業(yè)機(jī)會。無線聚合滿足監(jiān)控網(wǎng)絡(luò)路高帶寬需求    雖然無線技術(shù)正在
    發(fā)表于 03-18 12:51

    醫(yī)療冷監(jiān)控系統(tǒng)

    系統(tǒng)的復(fù)雜性決定了,人根本不可能進(jìn)行實(shí)時(shí)監(jiān)控,這樣不僅會浪費(fèi)大量人力資源,同時(shí)不容易提前預(yù)警,而采用GPRS遠(yuǎn)程監(jiān)控方案,可以方便的對分布的冷系統(tǒng)進(jìn)行集群化管理,提前預(yù)警等。適用范圍中心血站、疫苗
    發(fā)表于 09-09 16:29

    調(diào)用溫度生成子VI,實(shí)現(xiàn)溫度監(jiān)控

    調(diào)用溫度生成子VI,實(shí)現(xiàn)溫度監(jiān)控
    發(fā)表于 05-31 17:43

    數(shù)十萬應(yīng)用結(jié)點(diǎn)全息監(jiān)控,ARMS新上線的應(yīng)用監(jiān)控神器到底有多牛?

    。? 通過ARMS特制的日志API和全息排查功能,用戶還可以將業(yè)務(wù)信息進(jìn)一步關(guān)聯(lián)到具體的調(diào)用中,快速定位相關(guān)業(yè)務(wù)信息的調(diào)用上下文。和同類APM類工具相比,基于鷹眼的ARMS應(yīng)用
    發(fā)表于 12-25 13:55

    “前端+應(yīng)用”兩大監(jiān)控利器商業(yè)化首發(fā) ARMS領(lǐng)跑APM市場

    ,快速定位分布式調(diào)用中的問題點(diǎn)。? 通過ARMS特制的日志API和全息排查功能,用戶還可以將業(yè)務(wù)信息進(jìn)一步關(guān)聯(lián)到具體的調(diào)用中,快速定位相關(guān)業(yè)務(wù)信息的
    發(fā)表于 03-14 11:30

    請問基于GPS/GPRS冷運(yùn)輸車輛監(jiān)控系統(tǒng)是怎么設(shè)計(jì)的 ?

    本帖最后由 一只耳朵怪 于 2018-5-28 09:31 編輯 題目:基于GPS/GPRS冷運(yùn)輸車輛監(jiān)控系統(tǒng)的設(shè)計(jì)要求:單片機(jī)采集車廂內(nèi)溫濕度,利用GPRS將GPS定位的車輛信息和采集到
    發(fā)表于 05-26 18:51

    基于分布式調(diào)用監(jiān)控技術(shù)的全息排查功能

    作為鷹眼的商業(yè)化產(chǎn)品,用于全路APM監(jiān)控的阿里云業(yè)務(wù)實(shí)時(shí)監(jiān)控服務(wù) (ARMS) , 基于鷹眼的全息排查沉淀,近日推出了基于分布式調(diào)用
    發(fā)表于 08-07 17:02

    監(jiān)控工具Skywalking使用指南

    國產(chǎn)全監(jiān)控工具Skywalking
    發(fā)表于 09-03 14:26

    上海邏迅丨冷物流溫濕度監(jiān)控 系統(tǒng)構(gòu)架圖

    內(nèi)。本公司提供的冷系統(tǒng)管理解決方案,集無線SmartNode 通訊技術(shù)、溫濕度傳感技術(shù)、物聯(lián)網(wǎng)技術(shù)、數(shù)據(jù)庫技術(shù)于一體,對冷物流中的環(huán)境溫濕度進(jìn)行實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)了冷物流過程中的可視
    發(fā)表于 10-08 15:18

    淺析方程

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、磁方程前言異步電機(jī)轉(zhuǎn)子磁場定向控制提示:以下是本篇文章正文內(nèi)容,下面案例可供參考一、磁方程...
    發(fā)表于 09-06 08:19

    MC68HC908LJ12 監(jiān)控ROM 中的子程序調(diào)用

    MC68HC908LJ12 監(jiān)控ROM 中的子程序調(diào)用
    發(fā)表于 05-14 14:50 ?21次下載

    微服務(wù)循環(huán)依賴調(diào)用引發(fā)的血案

    順著測試匯報(bào)的出現(xiàn)問題的場景,跟蹤調(diào)用上相關(guān)服務(wù)的日志,發(fā)現(xiàn)出現(xiàn)了微服務(wù)之間循依賴調(diào)用。大致情況可以抽象如下所示(圖中所有調(diào)用都是 http 協(xié)議)
    的頭像 發(fā)表于 01-16 10:28 ?663次閱讀

    淺析配電室智能監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)踐探索

    淺析配電室智能監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)踐探索 張穎姣 安科瑞電氣股份有限公司 上海嘉定 201801 摘要:配電室智能監(jiān)控系統(tǒng)設(shè)計(jì),引起供電部門重視,借助科學(xué)技術(shù),加大配電室智能監(jiān)控系統(tǒng)設(shè)計(jì)
    的頭像 發(fā)表于 02-19 14:12 ?338次閱讀
    <b class='flag-5'>淺析</b>配電室智能<b class='flag-5'>監(jiān)控</b>系統(tǒng)的設(shè)計(jì)與實(shí)踐探索

    淺析消防設(shè)備電源監(jiān)控系統(tǒng)設(shè)計(jì)及應(yīng)用

    淺析消防設(shè)備電源監(jiān)控系統(tǒng)設(shè)計(jì)及應(yīng)用 張穎姣 安科瑞電氣股份有限公司?上海嘉定 201801 摘要 :消防設(shè)備電源監(jiān)控系統(tǒng)在許多大型商場或公司中非常重要的,所以消防設(shè)備電源監(jiān)控系統(tǒng)的良好
    的頭像 發(fā)表于 03-12 10:25 ?259次閱讀
    <b class='flag-5'>淺析</b>消防設(shè)備電源<b class='flag-5'>監(jiān)控</b>系統(tǒng)設(shè)計(jì)及應(yīng)用

    淺析電氣火災(zāi)監(jiān)控系統(tǒng)在某地鐵車站的設(shè)計(jì)及應(yīng)用

    淺析電氣火災(zāi)監(jiān)控系統(tǒng)在某地鐵車站的設(shè)計(jì)及應(yīng)用 張穎姣 安科瑞電氣股份有限公司?上海嘉定201801 摘要:基于國家相關(guān)規(guī)范對建筑中設(shè)置電氣火災(zāi)監(jiān)控系統(tǒng)的要求,結(jié)合目前某地方城市地鐵供配電方案特點(diǎn),從
    的頭像 發(fā)表于 03-12 11:02 ?203次閱讀
    <b class='flag-5'>淺析</b>電氣火災(zāi)<b class='flag-5'>監(jiān)控</b>系統(tǒng)在某地鐵車站的設(shè)計(jì)及應(yīng)用