1. 程式人生 > >多語言(Java、.NET、Node.js)混合架構下開源調用鏈追蹤APM項目初步選型

多語言(Java、.NET、Node.js)混合架構下開源調用鏈追蹤APM項目初步選型

try 進行 The 語言 active istio .net core ref 配置

1. 背景

我們的技術棧包括了Java、.NET、Node.js等,並且采用了分布式的技術架構,系統性能管理、問題排查成本越來越高。

2. 基本訴求

針對我們的情況,這裏列出了選型的主要條件,作為最終判斷依據

基本條件:

  • 多平臺探針(Java、.NET Core、Node.js)
  • 無侵入的探針部署方式
  • 探針對應用性能和高可用影響小
  • 服務端高可用,服務端不可用時,客戶端無影響

3. 主要選項

主流的調用鏈追蹤項目有Pinpoint、Zipkin、Skywalking、CAT

3.1. Pinpoint

Pinpoint是韓國人開源,項目活躍度比較高,web端功能比較健全,包括應用調用關系拓撲圖、請求調用鏈、應用性能狀態查看等,探針支持Java和PHP。

項目地址 https://github.com/naver/pinpoint

3.2. Zipkin

Zipkin是Twitter開源的調用鏈分析工具,特點是輕量,使用部署簡單,另外優勢是探針支持的語言平臺比較豐富。

項目地址 https://github.com/openzipkin/zipkin

3.3. Skywalking

SkyWalking是本土開源的調用鏈分析、以及應用監控分析工具。已加入Apache孵化器,特點是支持多種語言的探針(Java、.NET Core、NodeJS、PHP),探針支持的組件也非常豐富,UI功能較強,接入端無代碼侵入,兼容Zipkin和Istio telemetry格式。

項目地址 https://github.com/apache/incubator-skywalking

3.4. CAT (Central Application Tracking)

CAT是大眾點評開源的基於編碼和配置的調用鏈分析,應用監控分析,日誌采集,監控報警等一系列的監控平臺工具。

項目地址 https://github.com/dianping/cat

4. 特性對比

特性PinpointZipkinSkywalkingCAT
存儲方式 Hbase Cassandra、ES、MySQL、InMemory ES、H2、MySQL、TiDB MySQL、Hadoop
部署依賴 zookeeper、consul、Kubernetes Tomcat
數據協議 thrift HTTP、MQ gRPC TCP
數據采樣
探針方式 無侵入 侵入式 無侵入 侵入式
探針平臺 Java、PHP Java、.NET Core、Go、PHP、Ruby、Js Java、.NET Core、Go、PHP、Node.js Java、C、C++、Python、Go、Node.js
OpenTracing 不支持 支持 支持 不支持
STAR數 8049 10407 5838 8038
近1月提交人數 9 3 13 6
近1月提交數 91 25 78 20

PS: 社區活躍度數據截至2019.02.15,僅供參考,並不能代表實際的活躍度。

5. 性能對比

參考文章《調用鏈選型之Zipkin,Pinpoint,SkyWalking,CAT》https://www.jianshu.com/p/0fbbf99a236e,Skywalking的Java探針對應用的性能影響最小,關於其它平臺上的探針後續將做測試。

6. 初步結論

Zipkin積累的STAR數最多,Skywalking由於項目成立較晚,STAR數最少。近期的社區活躍度方面Pinpoint和Skywalking熱度最高。

由於Pinpoint和CAT目前不支持 .NET Core 的探針直接排除,Zipkin和Skywalking的探針集成方式上對比,Skywalking的無侵入方式有很大的優勢。

另外Skywaling為國人主導的項目,國人參與度非常高,溝通方面有一定的優勢。

後續我們將針對Skywalking進行下面幾點的測試:

  • 服務端高可用性
  • 服務端數據容量增長對性能的影響
  • 服務端不可用時對不同平臺客戶端的影響
  • 不同平臺探針對應用的性能影響

7. 參考資料

調用鏈選型之Zipkin,Pinpoint,SkyWalking,CAT https://www.jianshu.com/p/0fbbf99a236e

全鏈路監控(一):方案概述與比較 https://juejin.im/post/5a7a9e0af265da4e914b46f1

探針性能揭秘 https://github.com/SkyAPMTest/Agent-Benchmarks/blob/master/README_zh.md

多語言(Java、.NET、Node.js)混合架構下開源調用鏈追蹤APM項目初步選型