SOFATracer 是螞蟻金服基于 OpenTracing 規范開發的分布式鏈路跟蹤系統,其核心理念就是通過一個全局的 TraceId 將分布在各個服務節點上的同一次請求串聯起來。通過統一的 TraceId 將調用鏈路中的各種網絡調用情況以日志的方式記錄下來,同時也提供遠程匯報到 Zipkin 進行展示的能力,以此達到透視化網絡調用的目的。
功能描述
基于 OpenTracing 規范提供分布式鏈路跟蹤解決方案
基于 OpenTracing 規范 并擴展其能力提供鏈路跟蹤的解決方案。各個框架或者組件可以基于此實現,通過在各個組件中埋點的方式來提供鏈路跟蹤的能力。
提供異步落地磁盤的日志打印能力
基于 Disruptor 高性能無鎖循環隊列,提供異步打印日志到本地磁盤的能力。框架或者組件能夠在接入時,在異步日志打印的前提下可以自定義日志文件的輸出格式。SOFATracer 提供兩種類似的日志打印類型即摘要日志和統計日志:
摘要日志:每一次調用均會落地磁盤的日志。
統計日志:每隔一定時間間隔進行統計輸出的日志。
支持日志自清除和滾動能力
異步落地磁盤的 SOFATracer 日志支持自清除和滾動能力,支持按照天清除和按照小時或者天滾動的能力。
基于 SLF4J MDC 的擴展能力
SLF4J 提供了 MDC(Mapped Diagnostic Contexts)功能,可以支持用戶定義和修改日志的輸出格式以及內容。SOFATracer 集成了 SLF4J MDC 功能,方便用戶在只簡單修改日志配置文件即可輸出當前 Tracer 上下文的 TraceId 和 SpanId。
界面展示能力
SOFATracer 可以將鏈路跟蹤數據遠程上報到開源產品 Zipkin 做分布式鏈路跟蹤的展示。
統一配置能力
配置文件中提供豐富的配置能力以定制化應用的個性需求。
應用場景
解決在實施大規模微服務架構時的鏈路跟蹤問題,達到透視化網絡調用的目的,并可用于故障的快速發現、服務治理等。
組件埋點
目前 SOFATracer 支持 Spring MVC、標準 JDBC 接口實現的數據庫連接池(DBCP、Druid、c3p0、tomcat、HikariCP、BoneCP)、HttpClient、Dubbo、Spring Cloud OpenFeign 等開源組件,其他開源組件(如 MQ、Redis)埋點支持在開發中。