中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

五分鐘教會你分布式系統調用鏈監控

發布時間:2020-09-01 01:32:04 來源:網絡 閱讀:847 作者:Java月亮呀 欄目:編程語言

五分鐘教會你分布式系統調用鏈監控

分布式系統調用鏈監控

  • 應用架構由集中式向分布式演進后,整個調用關系變得復雜。
  • 分布式架構由復雜且較大規模集群構成,各個應用之間相當獨立,可能由不同團隊、不同語言實現。
  • 系統一個完整的調用過程可能橫跨多個服務及數據中心。
    • 復雜的調用導致系統出問題后難以定位問題。
  • 無法準確知道整體系統性能及運行情況。

    全鏈路性能監控

    一個請求完整的調用鏈可能如下圖,經過多個系統服務,調用關系復雜。
    五分鐘教會你分布式系統調用鏈監控

期間我們會關注各個調用的各項性能指標,比如吞吐量(TPS)、響應時間及錯誤記錄等。

  • 吞吐量,根據拓撲可相應計算組件、平臺、物理設備的實時吞吐量。
  • 響應時間,包括整體調用的響應時間和各個服務的響應時間等。
  • 錯誤記錄,根據服務返回統計單位時間異常次數。

全鏈路性能監控從整體維度到局部維度展示各項指標,將跨應用的所有調用鏈性能信息集中展現,可方便度量整體和局部性能,并且方便找到故障產生的源頭,生產上可極大縮短故障排除時間。

Google Dapper

系統整個調用鏈

  1. 當用戶發起一個請求時,首先到達前端A服務,然后分別對B服務和C服務進行RPC調用;
  2. B服務處理完給A做出響應,但是C服務還需要和后端的D服務和E服務交互之后再返還給A服務,最后由A服務來響應用戶的請求;
    五分鐘教會你分布式系統調用鏈監控

對整個調用過程的追蹤

  1. 請求到來生成一個全局TraceID,通過TraceID可以串聯起整個調用鏈,一個TraceID代表一次請求。
  2. 除了TraceID外,還需要SpanID用于記錄調用父子關系。每個服務會記錄下parent id和span id,通過他們可以組織一次完整調用鏈的父子關系。
  3. 一個沒有parent id的span成為root span,可以看成調用鏈入口。
  4. 所有這些ID可用全局唯一的64位整數表示;
  5. 整個調用過程中每個請求都要透傳TraceID和SpanID。
  6. 每個服務將該次請求附帶的TraceID和附帶的SpanID作為parent id記錄下,并且將自己生成的SpanID也記錄下。
  7. 要查看某次完整的調用則只要根據TraceID查出所有調用記錄,然后通過parent id和span id組織起整個調用父子關系。
    五分鐘教會你分布式系統調用鏈監控

調用鏈監控核心工作

  • 調用鏈數據的生成,對整個調用過程的所有應用進行埋點并輸出日志。
  • 調用鏈數據采集,對各個應用中的日志數據進行采集。
  • 調用鏈數據存儲及查詢,對采集到的數據進行存儲,由于日志數據量一般都很大,不僅要能對其存儲,還需要能提供快速查詢。
  • 指標運算、存儲及查詢,對采集到的日志數據進行各種指標運算,將運算結果保存起來。
  • 告警功能,提供各種閥值警告功能。

    整體架構

    五分鐘教會你分布式系統調用鏈監控

  • 通過AGENT生成調用鏈日志。
  • 通過logstash采集日志到kafka。
  • kafka負責提供數據給下游消費。
  • storm計算匯聚指標結果并落到es。
  • storm抽取trace數據并落到es,這是為了提供比較復雜的查詢。比如通過時間維度查詢調用鏈,可以很快查詢出所有符合的traceID,根據這些traceID再去hbase查數據就快了。
  • logstash將kafka原始數據拉取到hbase中。hbase的rowkey為traceID,根據traceID查詢是很快的。

AGENT無侵入部署

通過AGENT代理的無侵入式部署,將性能測量與業務邏輯完全分離,可以測量任意類的任意方法的執行時間,這種方式大大提高了采集效率,并且減少運維成本。根據服務跨度主要分為兩大類AGENT:

  1. 服務內AGENT,這種方式是通過Java的agent機制,對服務內部的方法調用層次信息進行數據收集,如方法調用耗時、入參、出參等信息。

  2. 跨服務AGENT,這種情況需要對主流RPC框架以插件形式提供無縫支持。并通過提供標準數據規范以適應自定義RPC框架:
  • Dubbo支持
  • Rest支持
  • 自定義RPC支持

比如生成的數據格式如下:

{
    "hostIp": "192.168.4.1",
    "instanceName": "TracingDemo",
    "isEntry": true,
    "errCode": 0,
    "spanId": "3cbfe7f0-141c-4597-8b15-38d2fb145e01",
    "parentId": "16a52a9f-e697-45ce-92fb-7395339eae4b",
    "traceId": "e5549498-60f3-4870-8483-fe26f6d0367b",
    "className": "dao.impl.ProductDaoImpl",
    "methodName": "queryProduct",
    "inParam": "",
    "createTime": 1448442004537,
    "returnTime": 1448442004537,
    "callTime": 5
}

調用鏈監控好處

  • 準確掌握生產一線應用部署情況;
  • 從調用鏈全流程性能角度,識別對關鍵調用鏈,并進行優化。
  • 提供可追溯的性能數據,量化 IT 運維部門業務價值。
  • 快速定位代碼性能問題,協助開發人員持續性的優化代碼;
  • 協助開發人員進行白盒測試,縮短系統上線穩定期。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐陵市| 天祝| 应城市| 深泽县| 芒康县| 安岳县| 恩施市| 孝义市| 云龙县| 利辛县| 都江堰市| 辽宁省| 青岛市| 武鸣县| 泸西县| 临潭县| 棋牌| 大埔区| 西宁市| 靖西县| 渭源县| 华池县| 揭西县| 亳州市| 沁水县| 陇南市| 寻乌县| 军事| 永福县| 嘉兴市| 武邑县| 红原县| 宣武区| 金堂县| 宽城| 兖州市| 高淳县| 开江县| 本溪| 泽州县| 睢宁县|