目錄
- 第一章 Sleuth+Zipkin介紹
- 1.1、什么是Sleuth
- 1.2、什么是Zipkin
- 第二章 Sleuth+Zipkin入門案例
- 2.1、專案準備與啟動
- 2.2、搭Zipkin服務端
- 2.3、搭Zipkin客戶端
- 2.4、鏈路跟蹤的測驗
配套資料,免費下載
鏈接:https://pan.baidu.com/s/1la_3-HW-UvliDRJzfBcP_w
提取碼:lxfx
復制這段內容后打開百度網盤手機App,操作更方便哦
第一章 Sleuth+Zipkin介紹
1.1、什么是Sleuth
我們已經接觸過幾種微服務的監控方式,比如:Spring Boot Actuator監控微服務,Spring Boot Admin也是監控微服務,他是把Actuator的資料用可視化的方式呈現出來,Hystrix Dashboard監控Hystrix服務,Hystrix Turbine聚合多個Hystrix服務的監控資訊等,接下來我們要討論的是微服務的“跟蹤",
對于一個大型的幾十個、幾百個微服務構成的微服務架構系統,通常會遇到下面一些問題,比如:
- 如何串聯整個呼叫鏈路,快速定位問題?
- 如何理清各個微服務之間的依賴關系?
- 如何進行各個微服務介面的性能分折?
- 如何跟蹤整個業務流程的呼叫處理順序?
Spring Cloud Sleuth為Spring Cloud提供了分布式跟蹤的解決方案,它大量借用了Google Dapper、Twitter Zipkin和Apache HTrace的設計,幫我們解決像上面提到的問題,Spring Cloud Sleuth可以追蹤10種型別的組件:async、Hystrix,messaging,WebSocket,rxjava,scheduling,Web(Spring MVC Controller,Servlet),WebClient(Spring RestTemplate)、Feign/OpenFegin、Zuul;
Spring Cloud Sleuth對于分布式鏈路的跟蹤僅僅是生成一些資料,這些資料不便于人類閱讀,所以我們一般把這種跟蹤資料上傳給Zipkin Server,由Zipkin通過UI頁面統一進行資料的展示,
官方檔案地址:https://docs.spring.io/spring-cloud-sleuth/docs/2.2.6.RELEASE/reference/html/
我們通過一張圖來了解一個簡單的微服務的呼叫鏈路:

span(跨度)
span(跨度)是一個基本作業單元,span用一個64位的id唯一標識,除id外,span還包含其他資料,例如描述、時間戳事件、鍵值對的注解(標簽), spanId、parentId等,span被啟動和停止時,記錄了時間資訊,初始化 span被稱為"rootspan",該span的id和trace的id相等,
trace(跟蹤)
trace(跟蹤)是一組共享"rootspan"的span組成的樹狀結構,trace也用一個64位的id唯一標識,trace中的所有span都共享該trace的id,
annotation(標注)
annotation(標注)用來記錄事件的存在,其中,核心annotation用來定義請求的開始和結束,
CS(Client Sent客戶端發送)
客戶端發起一個請求,該annotation描述了span的開始,
SR(Server Received服務器端接收)
服務器端獲得請求并準備處理它,如果用SR減去CS時間戳,就能得到網路延遲,
SS(Server Sent服務器端發送)
該annotation表明完成請求處理(當回應發回客戶端時),如果用SS減去SR時間戳,就能得到服務器端處理請求所需的時間,
CR(Client Received客戶端接收)
客戶端發起一個請求,該annotation描述了span的結束,客戶端成功接收到服務器端的回應,如果CR減去CS時間戳,就能得到從客戶端發送請求到服務器回應的所需的時間,
1.2、什么是Zipkin
Zipkin是Twitter開源的分布式實時資料跟蹤系統(Distributed Tracking System),基于Google Dapper的論文設計而成,Google開源了 Dapper鏈路追蹤組件,并在2010年發表了論文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,這篇文章是業內實作鏈路追蹤的標桿和理論基礎,具有非常大的參考價值,
Zipkin它的主要功能是收集系統的時序資料,從而追蹤微服務架構的系統延時等問題,從而達到鏈路呼叫監控跟蹤作用,另外Zipkin還提供了一個非常友好的UI界面,來幫助分析追蹤資料,除此之外,Zipkin提供了可插拔資料存盤方式:In-Memory、MySql、Cassandra以及Elasticsearch,
Zipkin官網地址:http://zipkin.io
分布式跟蹤系統有一些成熟的開源產品,比如:韓國Naver的Pinpoint,Apache的HTrace,阿里的鷹眼EagleEye,京東的Hydra等,這些產品我們也把他們叫做APM(應用性能管理)工具,
下圖展示了Zipkin的基礎架構,它主要由4個核心組件構成:

- Collector:收集器組件,它主要用于處理從外部系統發送過來的跟蹤資訊,將這些資訊轉換為Zipkin內部處理的Span格式,以支持后續的存盤、分析、展示等功能,
- Storage:存盤組件,它主要對處理收集器接收到的跟蹤資訊,默認會將這些資訊存盤在記憶體中,我們也可以修改此存盤策略,通過使用其他存盤組件將跟蹤資訊存盤到資料庫中,
- RESTful API:API 組件,它主要用來提供外部訪問介面,比如給客戶端展示跟蹤資訊或是外接系統訪問以實作監控等,
- Web UI:UI 組件,基于 API 組件實作的上層應用,通過 UI 組件用戶可以方便而有直觀地查詢和分析跟蹤資訊,
Zipkin分為兩端,一個是Zipkin服務端,一個是Zipkin客戶端,客戶端也就是微服務的應用,客戶端會配置服務端的URL地址,一旦發生服務間的呼叫的時候,會被配置在微服務里面的Sleuth的監聽器監聽,并生成相應的Trace和Span資訊發送給服務端,發送的方式主要有兩種,一種是HTTP報文的方式,還有一種是訊息總線的方式如:RabbitMQ,
最終我們可以總結出來,Sleuth和Zipkin的關系就好比Spring Boot Actuator和Spring Boot Admin之間的關系,一個用于產生資料,一個用于展示資料,
第二章 Sleuth+Zipkin入門案例
2.1、項目準備與啟動
我們接下來的所有操作均是在Config最后完成的工程上進行操作,相關代碼請到配套資料中尋找,

我們需要依次啟動如下服務:(eureka-server7001會報錯,不用管,等eureka-server7002啟動后,過一會就恢復正常了)
- eureka-server7001
- eureka-server7002
打開瀏覽器輸入指定的地址:http://localhost:7001/login,登錄賬號:root,登錄密碼:123456

2.2、搭Zipkin服務端
(1)到官網下載Zipkin Server,下載地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
(2)我們下載2.12.9這個最新的版本,點擊進去后,選擇第一個,如果你下載失敗,可以到配套資料中尋找該jar包,

(3)輸入啟動命令啟動該jar包:java -jar zipkin-server-2.12.9-exec.jar

(4)打開瀏覽器輸入Zipkin的web界面地址:http://localhost:9411/zipkin/

(5)要想查看更加詳細的配置和命令請參考:
- 有關zipkin的啟動命令可以配置的引數可以看這里:https://github.com/apache/incubator-zipkin/tree/master/zipkin-server
- 有關zipkin配置mysql基礎建表陳述句可以看這里:https://github.com/apache/incubator-zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql
- 有關zipkin本身組態檔可以看這里:https://github.com/apache/incubator-zipkin/blob/master/zipkin-server/src/main/resources/zipkin-server-shared.yml
2.3、搭Zipkin客戶端
(1)服務提供者service-provider8001、service-provider8002、服務消費者service-consumer9002、service-consumer9003,全部添加以下依賴:
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
(2)服務提供者service-provider8001、service-provider8002、服務消費者service-consumer9002、service-consumer9003,全部添加以下配置:
application.yaml
spring:
zipkin:
base-url: http://localhost:9411
sender:
type: web
(3)服務提供者service-provider8001、service-provider8002、服務消費者service-consumer9002、service-consumer9003,從左向右依次啟動:
Eureka:

Console:

2.4、鏈路跟蹤的測驗
訪問地址:http://localhost:9002/consumer/product/findAll

鏈路跟蹤:http://localhost:9411/zipkin
點擊查找:

點擊鏈路:


查看依賴:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/257086.html
標籤:其他
上一篇:10592字,475行!帶你玩轉 MyCat 讀寫分離!
下一篇:2021美賽F題翻譯(僅供參考)
