作者:翟東波、葉書俊在微服務體系架構下,搜狐智能媒體使用 Zipkin 進行服務鏈路追蹤(Tracing)的埋點采集,將采集的 Trace 信息存儲到 StarRocks 中 。通過 StarRocks 強大的 SQL 計算能力,對 Tracing 信息進行多維度的統計、分析等操作,提升了微服務監控能力,從簡單統計的 Monitoring 上升到更多維度探索分析的 Observability 。
全文主要分為三個部分:第一節主要介紹微服務下的常用監控方式,其中鏈路追蹤技術,可以串聯整個服務調用鏈路,獲得整體服務的關鍵信息,對微服務的監控有非常重要的意義 。第二節主要介紹搜狐智能媒體是如何構建鏈路追蹤分析體系的,主要包括 Zipkin 的數據采集,StarRocks 的數據存儲,以及根據應用場景對 StarRocks 進行分析計算等三個部分 。第三節主要介紹搜狐智能媒體通過引入 Zipkin 和 StarRocks 進行鏈路追蹤分析取得的一些實踐效果 。
01 微服務架構中的鏈路追蹤 近年來,企業 IT 應用架構逐步向微服務、云原生等分布式應用架構演進,在搜狐智能媒體內部,應用服務按照微服務、Docker、Kubernetes、Spring Cloud 等架構思想和技術方案進行研發運維,提升部門整體工程效率 。
微服務架構提升工程效率的同時,也帶來了一些新的問題 。微服務是一個分布式架構,它按業務劃分服務單元,用戶的每次請求不再是由某一個服務獨立完成了,而是變成了多個服務一起配合完成 。這些服務可能是由不同的團隊、使用不同的編程語言實現,可能布在了不同的服務器、甚至不同的數據中心 。如果用戶請求出現了錯誤和異常,微服務分布式調用的特性決定了這些故障難以定位,相對于傳統的單體架構,微服務監控面臨著新的難題 。
Logging、Metrics、Tracing 微服務監控可以包含很多方式,按照監測的數據類型主要劃分為 Logging、Metrics 和Tracing 三大領域:
Logging
用戶主動記錄的離散事件,記錄的信息一般是非結構化的文本內容,在用戶進行問題分析判斷時可以提供更為詳盡的線索 。
Metrics
具有聚合屬性的采集數據,旨在為用戶展示某個指標在某個時段的運行狀態,用于查看一些指標和趨勢 。
Tracing
記錄一次請求調用的生命周期全過程,其中包括服務調用和處理時長等信息,含有請求上下文環境,由一個全局唯一的 Trace ID 來進行標識和串聯整個調用鏈路,非常適合微服務架構的監控場景 。
圖 1
三者的關系如上圖所示,這三者之間也是有重疊的,比如 Logging 可以聚合相關字段生成 Metrics 信息,關聯相關字段生成 Tracing 信息;Tracing 可以聚合查詢次數生成 Metrics 信息,可以記錄業務日志生成 Logging 信息 。一般情況下要在 Metrics 和 Logging 中增加字段串聯微服務請求調用生命周期比較困難,通過 Tracing 獲取 Metrics 和 Logging 則相對容易很多 。
另外,這三者對存儲資源有著不同的需求,Metrics 是天然的壓縮數據,最節省資源;Logging 傾向于無限增加的,甚至會超出預期的容量;Tracing 的存儲容量,一般介于 Metrics 和 Logging 兩者之間,另外還可通過采樣率進一步控制容量需求 。
從 Monitoring 到 Observability Monitoring tells you whether the system works. Observability lets you ask why it’s not working.
– Baron Schwarz
微服務監控從數據分析層次,可以簡單分為 Monitoring 和 Observability 。
圖 2
Monitoring
告訴你系統是否在工作,對已知場景的預定義計算,對各種監控問題的事前假設 。對應上圖 Known Knowns 和 Known Unknowns,都是事先假設可能會發生的事件,包括已經明白和不明白的事件 。
Observability
可以讓你詢問系統為什么不工作,對未知場景的探索式分析,對任意監控問題的事后分析 。對應上圖 Unknown Knowns 和 Unknown Unknowns,都是事未察覺可能會發生的事件,包括已經明白和不明白的事件 。
很顯然,通過預先假設所有可能發生事件進行 Monitoring 的方式,已經不能滿足微服務復雜的監控場景,我們需要能夠提供探索式分析的 Observability 監控方式 。在 Logging、Metrics 和 Tracing,Tracing 是目前能提供多維度監控分析能力的最有效方式 。
Tracing 鏈路追蹤 Tracing Analysis 為分布式應用的開發者提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲、應用依賴分析等工具,可以幫助開發者快速分析和診斷分布式應用架構下的性能瓶頸,提高微服務時代下的開發診斷效率 。
Tracing 可以串聯微服務中分布式請求的調用鏈路,在微服務監控體系中有著重要的作用 。另外,Tracing 介于 Metrics 和 Logging 之間,既可以完成 Monitoring 的工作,也可以進行 Observability 的分析,提升監控體系建設效率 。
- 中國民間故事哪個是正版,中國民間故事立人搜狐版
- 今日上市,理想L9詳解,5.3秒破百,尺寸接近寶馬X7,堪稱奶爸神車!
- bios功能設置,bios設置圖文詳解
- 太極拳二路暴垂視頻-陳式太極拳八式詳解
- 萬字果泡酒功效和作用 萬字果泡酒
- 詳解鐵觀音其他品種,鐵觀音鐵盒紅色包裝
- 臺式電腦怎么查看配置參數,怎么查看電腦配置參數詳解
- 關于孕婦不能吃的食物詳解
- 有助準媽媽安胎的食療方詳解
- 黃芪的十八大藥理作用詳解
