SOFATracer分布式鏈路追蹤中間件
SOFATracer 是一個(gè)用于分布式系統(tǒng)調(diào)用跟蹤的組件,通過(guò)統(tǒng)一的 traceId 將調(diào)用鏈路中的各種網(wǎng)絡(luò)調(diào)用情況以日志的方式記錄下來(lái),以達(dá)到透視化網(wǎng)絡(luò)調(diào)用的目的。這些日志可用于故障的快速發(fā)現(xiàn),服務(wù)治理等。
一、背景
在目前的技術(shù)架構(gòu)實(shí)施中,統(tǒng)一采用面向服務(wù)的分布式架構(gòu),通過(guò)服務(wù)來(lái)支撐起一個(gè)個(gè)應(yīng)用,而部署在應(yīng)用中的各種服務(wù)通常都是用復(fù)雜大規(guī)模分布式集群來(lái)實(shí)現(xiàn)的,同時(shí),這些應(yīng)用又構(gòu)建在不同的軟件模塊上,這些軟件模塊,有可能是由不同的團(tuán)隊(duì)開(kāi)發(fā),可能使用不同的編程語(yǔ)言來(lái)實(shí)現(xiàn)、有可能部署了幾千臺(tái)服務(wù)器。因此,就需要一些可以幫助理解各個(gè)應(yīng)用的線上調(diào)用行為,并可以分析遠(yuǎn)程調(diào)用性能的組件。
為了能夠分析應(yīng)用的線上調(diào)用行為以及調(diào)用性能,螞蟻金服基于 OpenTracing 規(guī)范 提供了分布式鏈路跟蹤 SOFATracer 的解決方案。
二、功能簡(jiǎn)介
為了解決在實(shí)施大規(guī)模微服務(wù)架構(gòu)時(shí)的鏈路跟蹤問(wèn)題,SOFATracer 提供了以下的能力:
2.1 基于 OpenTracing 規(guī)范提供分布式鏈路跟蹤解決方案
基于 OpenTracing 規(guī)范 并擴(kuò)展其能力提供鏈路跟蹤的解決方案。各個(gè)框架或者組件可以基于此實(shí)現(xiàn),通過(guò)在各個(gè)組件中埋點(diǎn)的方式來(lái)提供鏈路跟蹤的能力。
2.2 提供異步落地磁盤的日志打印能力
基于 Disruptor 高性能無(wú)鎖循環(huán)隊(duì)列,提供異步打印日志到本地磁盤的能力??蚣芑蛘呓M件能夠在接入時(shí),在異步日志打印的前提下可以自定義日志文件的輸出格式。SOFATracer 提供兩種類似的日志打印類型即摘要日志和統(tǒng)計(jì)日志,摘要日志:每一次調(diào)用均會(huì)落地磁盤的日志;統(tǒng)計(jì)日志:每隔一定時(shí)間間隔進(jìn)行統(tǒng)計(jì)輸出的日志。
2.3 支持日志自清除和滾動(dòng)能力
異步落地磁盤的 SOFATracer 日志支持自清除和滾動(dòng)能力,支持按照按照天清除和按照小時(shí)或者天滾動(dòng)的能力
2.4 基于 SLF4J MDC 的擴(kuò)展能力
SLF4J 提供了 MDC(Mapped Diagnostic Contexts)功能,可以支持用戶定義和修改日志的輸出格式以及內(nèi)容。SOFATracer 集成了 SLF4J MDC 功能,方便用戶在只簡(jiǎn)單修改日志配置文件即可輸出當(dāng)前 Tracer 上下文的 tracerId 和 spanId。
2.5 界面展示能力
SOFATracer 可以將鏈路跟蹤數(shù)據(jù)遠(yuǎn)程上報(bào)到開(kāi)源產(chǎn)品 Zipkin 做分布式鏈路跟蹤的展示。
2.6 統(tǒng)一配置能力
配置文件中提供豐富的配置能力以定制化應(yīng)用的個(gè)性需求。
