1. 程式人生 > >微服務springcloud—為什麼要實現微服務跟蹤和SpringCloudSleuth簡介

微服務springcloud—為什麼要實現微服務跟蹤和SpringCloudSleuth簡介

為什麼要實現微服務跟蹤

談到微服務跟蹤,就不得提一下Peter Deutsch的文章The Eight Fallacies of Distributed Computing(分散式計算八大誤區),大致內容如下: 網路可靠 延遲為零 頻寬無限 網路絕對安全 網路拓撲不會改變 必須有一名管理員 傳輸成本為零 網路同質化 從中可以到看,該文章很多點都在描述一個問題——網路問題。網路常常很脆弱,同時, 網路資源也是有限的。 我們知道,微服務之間通過網路通訊。如果能夠跟蹤每個請求,瞭解每個請求,瞭解 請求經過哪些微服務(從而瞭解資訊是如何在服務之間流動)、請求耗費時間、網路 延遲、業務邏輯耗費時間等指標,那麼就能更好地分析系統瓶頸、解決系統問題。 因此,微服務跟蹤很有必要。

Spring Cloud Sleuth簡介

Spring Cloud Sleuth為Spring cloud提供了分散式跟蹤的解決方案,他大量借用Google Dapper、Twitter Zipkin和Apache HTrace的設計。 先來了解一下Sleuth的術語,Sleuth借用了Dapper的術語。 span(跨度):基本工作單元,span用一個64位的id唯一標識。除ID外,span還包含其 他資料,例如描述、時間戳事件、鍵值對的註解(標籤),spanID、span父ID等。span 被啟動和停止時,記錄了時間資訊。初始化span被稱為“root span”,該span的id和trace 的ID相等。 trace(跟蹤):一組共享“root span”的span組成的樹狀結構成為trace。trace也用一個 64位的ID唯一標識,trace中的所有span 都共享該trace的ID。 annotation(標註):annotation用來記錄事件的存在,其中,核心annotation描述了 span的開始。 -CS(Client Sent客戶端傳送):客戶端發起一個請求,該annotation描述了 span的開始。 -SR(Server Received伺服器端接收):伺服器端獲得請求並準備處理它。如果用 SR減去CS時間戳,就能獲得網路延遲。 -SS(Server Sent伺服器端傳送):該annotation表明完成請求處理(當響應發回 客戶端時)。如果用SS減去SR時間戳,就能獲得到伺服器端處理請求所需的時間。 -SR(Client Received客戶端接收):span結束的標識。客戶端成功接收到伺服器端 的響應。如果CR減去CS時間戳,就能得到從客戶端傳送請求到伺服器響應所需的時間。

本文大部分內容轉載自周立的《Spring Cloud與Docker微服務架構實戰》