3.14:全鏈路跟蹤

本文將從以下三個(gè)方面闡述全鏈路跟蹤設(shè)計(jì)與實(shí)踐

  • 為什么要做全鏈路跟蹤

  • 怎么做全鏈路跟蹤

  • 開源框架選型

為什么要做全鏈路跟蹤

  • 場(chǎng)景介紹

在微服務(wù)架構(gòu)下,經(jīng)常出現(xiàn)以下問題:
1.某個(gè)服務(wù)出了故障,如何快速定位問題?
2.應(yīng)用程序出了瓶頸,如何快速確定瓶頸在哪里?
3.后臺(tái)服務(wù)響應(yīng)延遲高,如何確認(rèn)哪些服務(wù)導(dǎo)致的?
4.服務(wù)發(fā)布后,如何確認(rèn)是否一切正常?

  • 解決方案

基于日志的分布式請(qǐng)求跟蹤系統(tǒng),對(duì)業(yè)務(wù)侵入低;同時(shí)將系統(tǒng)分散的日志聚合,進(jìn)行海量日志分析,從而生成有價(jià)值的數(shù)據(jù)。

怎么做全鏈路跟蹤

核心技術(shù)

  • 每次請(qǐng)求都生成一個(gè)全局唯一的ID(TraceId),通過它將不同系統(tǒng)的生成的日志串起來,重組成調(diào)用鏈。
  • 各業(yè)務(wù)系統(tǒng)只要引入jar包或者通過探針(Agent)就可以實(shí)現(xiàn)無侵入的接入。
  • 提供可視化的查詢界面,快速的查詢調(diào)用鏈路,以及多維度的調(diào)用分析。

架構(gòu)設(shè)計(jì)

根據(jù)上述方案,我們先看下完整的設(shè)計(jì)圖吧。

全鏈路跟蹤.png

設(shè)計(jì)說明

1.埋點(diǎn)和日志生成:Java探針將本地日志通過本地socket方式發(fā)送給本機(jī)上的Trace日志收集節(jié)點(diǎn)Agent中。然后將多個(gè)探針的日志發(fā)送給日志收集服務(wù)集群。
2.Trace日志收集服務(wù)將數(shù)據(jù)進(jìn)行簡(jiǎn)單的格式化處理后,分成三個(gè)工作流進(jìn)行后續(xù)處理。

  • 原始數(shù)據(jù)全量保存到Elasticsearch,后續(xù)對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)的調(diào)用查詢。
  • Spark對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,形成QPS、平均耗時(shí)等實(shí)時(shí)統(tǒng)計(jì)。
  • Hadoop對(duì)日志進(jìn)行離線分析,并將結(jié)果存儲(chǔ)到Elasticsearch。

3.Dasboard頁面展示,通過可視化的界面查詢Redis和Elasticsearch中的數(shù)據(jù)。

ID設(shè)計(jì)

全鏈路跟蹤-ID設(shè)計(jì).png

開源框架選型

目前比較成熟的開源框架主要有Zipkin、PinPoint、Skywalking三種。下面就簡(jiǎn)單比較下各自的適用場(chǎng)景吧:

  • Zipkin:Dapper論文的典型實(shí)現(xiàn),功能稍顯單一,若只需要簡(jiǎn)單的鏈路跟蹤功能可以選擇使用。
  • PinPoint:韓國開源的一款功能強(qiáng)大、完善的APM工具,提供了可視化的鏈路調(diào)用拓?fù)鋱D、日志查詢、統(tǒng)計(jì)分析等一系列功能。缺點(diǎn)就是依賴HBase,安裝運(yùn)維成本較高,適合中大型公司。
  • Skywalking:國產(chǎn)的優(yōu)秀APM工具,功能沒有PinPoint強(qiáng)大,且使用Mysql存儲(chǔ),在大數(shù)據(jù)量下比較局限性,適合中小型公司。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容