SpringCloud之服務(wù)追蹤

??為什么要服務(wù)追蹤?我們?cè)陂_(kāi)發(fā)中經(jīng)常會(huì)碰到這樣的問(wèn)題,我們調(diào)用別人的服務(wù)A耗時(shí)很多,這個(gè)時(shí)候我就去聯(lián)系服務(wù)A的負(fù)責(zé)人讓他幫排查下問(wèn)題所在,但是服務(wù)A的負(fù)責(zé)人也很頭疼,說(shuō)他的服務(wù)也調(diào)用了別人的服務(wù)B、C、D等等,那這個(gè)時(shí)候排查就非常麻煩了,所以我們需要進(jìn)行服務(wù)追蹤~

1.Spring Cloud Sleuth

1.1pom.xml

        <!--包含sleuth和zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

1.2yaml配置文件

spring:
  zipkin:
    base-url: http://zipkin:9411/
    sender:
      type: web
  sleuth:
    sampler:
      probability: 1

??這里多講一個(gè)就是sampler.probability,是因?yàn)樵诎l(fā)生服務(wù)調(diào)用的時(shí)候,sleuth會(huì)通過(guò)采樣的方式來(lái)獲取服務(wù)調(diào)用時(shí)間的,sleuth默認(rèn)是10%的抽樣統(tǒng)計(jì),為什么只有10%,假設(shè)說(shuō)每個(gè)請(qǐng)求調(diào)用都進(jìn)行采樣的,會(huì)耗費(fèi)系統(tǒng)的性能,所以默認(rèn)10%,但是我們這里為了方便觀察,將采樣率寫(xiě)成了100%

1.3啟動(dòng)zipkin Server

??這里建議大家使用docker來(lái)啟動(dòng)zipkin Server非??焖?/p>

2.分布式追蹤系統(tǒng)

2.1核心步驟

2.1.1數(shù)據(jù)采集

??數(shù)據(jù)采集過(guò)程中,由于各個(gè)系統(tǒng)的API不兼容,導(dǎo)致如果我們希望切換追蹤系統(tǒng),往往會(huì)有很大的改動(dòng),因此我們引入了OpenTracing規(guī)范,以解決不同分布式追蹤系統(tǒng)API不兼容的問(wèn)題。OpenTracing的優(yōu)勢(shì)在于提供了平臺(tái)無(wú)關(guān)、廠商無(wú)關(guān)的API,使得開(kāi)發(fā)人員便于切換追蹤系統(tǒng)。OpenTracing來(lái)自于大名鼎鼎的CNCF,現(xiàn)有的ZIPKIN、TRACER、JAEGER、GRPC等等都跟進(jìn)OpenTracing。OpenTracing數(shù)據(jù)模型中重要的概念就是trace--調(diào)用鏈,是通過(guò)歸屬此調(diào)用鏈的span來(lái)定義的。span和trace都是谷歌的開(kāi)源項(xiàng)目。這里面還有一個(gè)專(zhuān)業(yè)術(shù)語(yǔ)叫Annotation,Annotation是用來(lái)即時(shí)記錄一個(gè)事件的,一些核心注解用來(lái)定義一個(gè)請(qǐng)求的開(kāi)始和結(jié)束,可以理解成span生命周期中重要時(shí)刻的數(shù)據(jù)快照,比如一般包含發(fā)生時(shí)刻、事件類(lèi)型等信息。事件類(lèi)型一共有四種:
1.cs:客戶(hù)端發(fā)起請(qǐng)求的時(shí)間
2.cr:客戶(hù)端收到處理完請(qǐng)求的時(shí)間
3.ss:服務(wù)端處理完邏輯的時(shí)間
4.sr:服務(wù)端收到調(diào)用端請(qǐng)求的時(shí)間
所以客戶(hù)端調(diào)用時(shí)間=cr-cs,服務(wù)端處理時(shí)間=sr-ss

2.1.2數(shù)據(jù)存儲(chǔ)

2.1.3查詢(xún)展示

3.Zipkin

??ZipKin是twitter的開(kāi)源項(xiàng)目,其架構(gòu)圖如下


zipkin架構(gòu)圖

ZipKin中的關(guān)鍵東西就是Collector、Storage、API、UI,Collection就是收集調(diào)用新,Storage存儲(chǔ)這些調(diào)用信息,默認(rèn)是放在內(nèi)存中的,如果怕重啟丟失可以放到數(shù)據(jù)庫(kù)中,API是暴露給外部訪問(wèn)采集統(tǒng)計(jì)信息的,UI是為了方便展示數(shù)據(jù)采樣相信的模塊。下圖是zipkinUI的一個(gè)截圖:


image.png

3.1zipkin中的幾個(gè)關(guān)鍵概念

3.1.1traceId

??全局的跟蹤Id,是跟蹤的入口點(diǎn),根據(jù)需求來(lái)決定在哪里生成traceId,比如我們常見(jiàn)的一個(gè)Http請(qǐng)求,入口是web應(yīng)用,結(jié)束點(diǎn)就是請(qǐng)求的返回點(diǎn)。

3.1.2spanId

??下一層的請(qǐng)求跟蹤Id,一個(gè)traceId可以包含一個(gè)以上的spanId。

3.1.3parentId

??上一次請(qǐng)求跟蹤Id,用來(lái)將前后請(qǐng)求串聯(lián)起來(lái)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • why: 1,微服務(wù)架構(gòu)微服務(wù)增多,一個(gè)客戶(hù)端請(qǐng)求形成一個(gè)復(fù)雜的分布式服務(wù)調(diào)用鏈路,如果任何一個(gè)服務(wù)延遲過(guò)高或...
    xiaoyang08閱讀 3,952評(píng)論 0 5
  • 普元推出DevOps系列課程,5分鐘秒懂一個(gè)知識(shí)點(diǎn),戳“閱讀原文”充電5分鐘,掌握黑科技。 轉(zhuǎn)載本文需注明出處:微...
    72a1f772fe47閱讀 4,634評(píng)論 0 0
  • 安頓好,終于又可以畫(huà)畫(huà)啦。用的馬利管彩6原色。沒(méi)錯(cuò),顏色都是調(diào)出來(lái)的〈( ^.^)ノ 紙是剛?cè)肟訒r(shí)買(mǎi)的張大千...
    夏那閱讀 386評(píng)論 0 2
  • Uber一輛自動(dòng)駕駛汽車(chē)在美國(guó)亞利桑那州出事,雖無(wú)人員傷亡,但Uber隨即暫停該業(yè)務(wù)。事發(fā)原因是另一輛車(chē)輛在左轉(zhuǎn)...
    Stan森閱讀 234評(píng)論 0 0
  • #v課會(huì)·第3季·小學(xué)30天思維導(dǎo)圖實(shí)戰(zhàn)營(yíng)# 打卡天數(shù):23/30 打卡時(shí)間:2018.7.3 打卡主題:思維導(dǎo)圖...
    泡媽雷閱讀 243評(píng)論 0 1

友情鏈接更多精彩內(nèi)容