天天看點

瘋狂Spring Cloud連載(29)微服務跟蹤概述

 本文節選自《瘋狂Spring Cloud微服務架構實戰》

京東購買位址::https://item.jd.com/12256011.html

當當網購買位址::http://product.dangdang.com/25201393.html

Spring Cloud教學視訊:http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud電子書:http://blog.csdn.net/boxiong86/article/details/78488226

微服務跟蹤概述

先對微服務跟蹤的相關概念,做一個基本的講解。

實際問題與Sleuth

前面章節中,我們使用Spring Cloud來搭建服務叢集,不論是Eureka伺服器、服務執行個體,還是配置伺服器、網關等節點,都可以橫向擴充。一旦叢集中的服務數量增多,并且它們之間存在複雜的依賴關系,那麼管理它們将會變成一件很棘手的事情。

當外部使用者向叢集發起請求,這些請求将會調用多個服務,每個服務又會依賴其他的服務,此時,如果出現異常、逾時等情況,排查問題将變得非常困難。我們需要很清楚知道,服務出現了什麼問題,這些問題出在哪個環節。

為了能解決這些問題,Spring Cloud提供了Sleuth架構作為解決方案,Sleuth可以與Zipkin、Apache HTrace和ELK等資料分析、服務跟蹤系統進行整合,為服務跟蹤、解決問題提供了便利。

服務跟蹤系統

目前有許多的分布式跟蹤系統,例如Zipkin、HTrace等,這些系統可以幫助我們收集一些,由服務實時産生的資料(主要是日志),通過這些資料可以分析出分布式系統的健康狀态、服務調用過程、調用耗時等名額,為優化系統、解決問題提供了依據。

讀者需要差別兩個基本的概念:服務跟蹤和資料分析,資料分析系統(例如ELK等)收集了服務叢集所産生的資料後,也可以實作服務監控、服務跟蹤等功能,但明顯資料分析系統的概念更為廣泛、抽象。本書将會介紹服務跟蹤系統Zipkin,同樣也會介紹著名的資料分析平台ELK。

Sleuth基本概念

Sleuth借鑒了Google Dapper的設計,先了解以下兩個概念:

?      Trace:表示整個跟蹤的過程,從使用者發起請求,到最終的響應。一次跟蹤包含多個跨度,這些跨度以樹狀結構進行儲存。

?      Span:跨度,表示一次調用的過程,一次跟蹤包含多次的調用過程。假設使用者向A服務發送請求,A服務又要調用B服務,那麼此時将會産生兩個跨度:使用者調用A服務、A服務調用B服務。

圖10-1簡單地描述了跨度的概念。

瘋狂Spring Cloud連載(29)微服務跟蹤概述

圖10-1 跨度

如圖10-1,使用者或外部程式調用A服務,此次調用看作是跨度A,A服務還要調用B服務,在跨度A的基礎上會産生跨度B,跨度B是跨度A的一部分,在Sleuth的設計上,跨度A是B的父跨度。是以在整個跟蹤過程中,這些跨度是樹狀結構的。

除了跟蹤和跨度外,還要了解一下Annotation(事件辨別),它主要用于記錄事件的存在,主要包括以下幾個事件辨別:

?      cs:Client Sent,表示用戶端發送了請求,這個辨別意味着跨度的開始。例如前面的A服務向B服務發送請求,A服務就是用戶端。

?      sr:Server Received,表示服務端接收到請求,并開始進行處理。

?      ss:Server Sent,表示伺服器端完成請求的處理,并對用戶端做出響應。

?      cr:Client Received,表示用戶端接收到響應,意味着整個跨度的結束。

項目準備

在使用Sleuth前,先準備本章的測試項目,本章主要以一個微服務叢集為基礎,該叢集包括以下項目:

?      test-eureka-server:Eureka伺服器,端口為8761。

?      test-book-service:圖書微服務,主要提供根據id查詢圖書的服務,端口為8081。

?      test-pay-service:支付微服務,主要提供支付服務,端口為8082。

?      test-sale-service:銷售微服務,會調用圖書服務和支付服務,端口為8083。

以上的項目,均可以在codes\10目錄找到對應的源碼,幾個項目的結構請見圖10-2。

瘋狂Spring Cloud連載(29)微服務跟蹤概述

圖10-2 測試項目結構

以上幾個測試項目是一個簡單的Spring Cloud叢集,銷售服務依賴了“圖書服務”和“支付服務”。

 本文節選自《瘋狂Spring Cloud微服務架構實戰》

Spring Cloud教學視訊:http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud電子書:http://blog.csdn.net/boxiong86/article/details/78488226

本書代碼共享位址:https://gitee.com/yangenxiong/SpringCloud

瘋狂Spring Cloud連載(29)微服務跟蹤概述
瘋狂Spring Cloud連載(29)微服務跟蹤概述

繼續閱讀