十一:對微服務呼叫鏈監控的理解
阿新 • • 發佈:2019-02-02
微服務專欄地址
目錄
1. 簡介
微服務的呼叫鏈監控是解決微服務的複雜性帶來的一系列問題的強有效手段之一,從一下幾個方面來先理解微服務呼叫鏈監控相關:
- 簡介
- 什麼是呼叫鏈
- 為什麼要監控呼叫鏈
- 要監控哪些方面
- 呼叫鏈監控原理是什麼
5.1 監控原理圖 - 有什麼技術解決方案
6.1 解決方案
6.2 對比 - 監控技術選型如何選擇
2. 什麼是呼叫鏈
一個業務功能可能需要多個服務協作才能實現,一個請求到達服務A,服務A需要依賴服務B,服務B又依賴服務C,甚至C仍需依賴其他服務,形成一個呼叫鏈條,即呼叫鏈。
3. 為什麼要監控呼叫鏈
上圖傳遞了一個資訊,就是微服務的複雜性
- 出現問題後,定位困難,需要對整個呼叫鏈路有個完善的監控
- 鏈路複雜,需要清晰的鏈路圖譜反映服務之間的依賴、呼叫關係
- 整體系統效能及執行情況,需要明確的體現,才能根據實際情況調整資源
4. 要監控哪些方面
- 圖形化展示整個呼叫鏈路
- 系統的效能指標
- 健康狀況
- 基礎告警
5. 呼叫鏈監控原理是什麼
5.1 監控原理圖
- RootSpan會生成一個Trace id以及parent span id
- Trace id是整個呼叫鏈的監控跟蹤ID
- span是服務中一次請求以及對應響應這個span的id
類比於Chrome載入網頁時,載入各種資源消耗時間:
6. 有什麼技術解決方案
6.1 解決方案
- CAT (Central Application Tracking):由吳其敏(前大眾點評首席架構師,現攜程架構負責人)主導設計基於Java開發打造的實時應用監控平臺,為大眾點評網提供了全面的監控服務和決策支援。
- Zipkin:分散式跟蹤系統;它可以幫助收集時間資料,解決在microservice架構下的延遲問題;它管理這些資料的收集和查詢;Zipkin的設計是基於谷歌的Google Dapper論文。
- Pinpoint:Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
6.2 對比
維度 | CAT | Zipkin | PinPoint |
---|---|---|---|
呼叫鏈視覺化 | 有 | 有 | 有 |
報表 | 非常豐富 | 少 | 中 |
ServerMap | 簡單依賴圖 | 簡單 | 好 |
埋點方式 | 侵入 | 侵入 | 入侵入,位元組碼增強 |
Heartbeat支援 | 有 | 無 | 有 |
Metric支援 | 有 | 無 | 無 |
Java .Net客戶端 | 有 | 有 | 只有Java |
Dashboard支援中文 | 好 | 無 | 無 |
社群支援 | 好,文件豐富 | 好,文件一般,暫無中文 | 一般,文件缺,無中文 |
國內案例 | 攜程、點評、陸金所、獵聘網 | 京東、阿里不開源 | 暫無 |
源頭祖先 | eBay CAL(Centrialized Application Logging) | Google Dapper | Google Dapper |
7. 監控技術選型如何選擇
未實際應用,僅列出自己的選擇標準:CAT
- 文件:CAT
- 社群活躍度:CAT
- 中文支援:CAT
- 呼叫鏈視覺化:都具備
- 心跳連結:CAT、PinPoint
- Metric:CAT
- 報表:都有