Spring Cloud:APM工具Zipkin+Sleuth、pinpoint、SkyWalking、CAT

簡介

  • Zipkin

由Twitter公司開源,開放源代碼分佈式的跟蹤系統,用於收集服務的定時數據,以解決微服務架構中的延遲問題,包括:數據的收集、存儲、查找和展現。

  • pinpoint

pinpoint是韓國人開源的 APM (Application Performance Management/應用性能管理)工具 - Pinpoint。它基於google Dapper開發,目標就是爲n(n>=1)層架構開發新的跟蹤平臺,爲n層架構的系統提供解決方案。pinpoint能夠對基於java的大規模分佈式系統和應用做調用鏈的跟蹤。pinpoint提供了一個web頁面展示分佈式系統的拓撲圖以及系統這各個組件之間關係。pinpoint 有3個主要組件組成:日誌收集器[Collector]、控制檯[Web]、代理[Agent],採用HBase進行存儲。

  • SkyWalking

國產的優秀APM組件,2015年由個人吳晟(華爲開發者)開源 ,2017年加入Apache孵化器;是一個對JAVA分佈式應用程序集羣的業務運行情況進行追蹤、告警和分析的系統。使用java探針字節碼增加技術,實現對整個應用的監控 ;對應用零侵入。針對分佈式系統的應用性能監控系統,特別針對微服務、cloud native和容器化(Docker, Kubernetes, Mesos)架構, 其核心是個分佈式追蹤系統;

  • CAT

CAT 作爲服務端項目基礎組件,提供了 Java, C/C++, Node.js, Python, Go 等多語言客戶端,已經在美團點評的基礎架構中間件框架(MVC框架,RPC框架,數據庫框架,緩存框架等,消息隊列,配置系統等)深度集成,爲美團點評各業務線提供系統豐富的性能指標、健康狀況、實時告警等。

  • Spring Cloud Sleuth

Spring Cloud Sleuth 主要功能就是在分佈式系統中提供追蹤解決方案,並且兼容支持了 zipkin,你只需要在pom文件中引入相應的依賴即可。

特性

  Zipkin Pinpoint SkyWalking CAT Sleuth湊數
開發者 Twitter 韓國 Apache 美團 Spring
實現方式 攔截請求,發送(HTTP,mq)數據至zipkin服務 java探針,字節碼增強 java探針,字節碼增強 代碼埋點(攔截器,註解,過濾器等) 代碼埋點(攔截器,註解,過濾器等)
接入方式 基於linkerd或者sleuth方式,引入配置即可 javaagent字節碼 javaagent字節碼 代碼侵入 代碼侵入
agent到collector的協議 http,MQ thrift gRPC http/tcp  
OpenTracing 支持 x 支持 x 支持
顆粒度 接口級 方法 方法 代碼級  
全局調用統計 x 支持 支持 支持  
traceid查詢 支持 x 支持 x  
JVM監控 x x 支持 支持  
健壯度UI面板  
數據存儲 ES,mysql,Cassandra,內存 Hbase ES,H2 mysql,hdfs  
社區star(2020.5) 12.9K

10.3K

13.4K 13.3K 1.3K

性能

性能參考:https://juejin.im/post/5a7a9e0af265da4e914b46f1

skywalking的探針對吞吐量的影響最小,zipkin的吞吐量居中。pinpoint的探針對吞吐量的影響較爲明顯,在500併發用戶時,測試服務的吞吐量從1385降低到774,影響很大。然後再看下CPU和memory的影響,在內部服務器進行的壓測,對CPU和memory的影響都差不多在10%之內。

 

參考:

別家之言:

他們都提供了分佈式服務跟蹤的能力,pinpoint以及skywalking不僅僅提供了分佈式服務跟蹤的能力,
還提供了其他性能監控,是一個APM解決方案。zipkin主要是分佈式服務跟蹤,同時與SpringCloud進行有效的集成。
個人覺得pinpoint以及skywalking部署相對麻煩一些。

江湖上都推薦pingpoint,zipkin的監控易於搭建,但是監控的東西很簡單

pinpoint偏向於中等的分佈式規模,拓撲和關係不會做的很深,會限制深度。優勢是做的時間比較長,理論上穩定一些。缺點是hbase本身就是一個重度運維中間件,要考慮自身情況

skywalking會傾向於微服務的分佈式系統,爲自研的探針提供了完善的接入支持,我們目前就在給噹噹做這個接入當時的支持。同時我們會着重比如服務的依賴關係,服務的統計指標。我們對於應用,只需要配置應用id,不需要實例id,對容器環境畢竟k8,linkerd友好

zipkin強在生態和範圍,國外的絕大多數組件都提供了集成方案,只需要少量修改代碼或者配置就可以。比如linkerd原生就支持zipkin

部署上如果你容量不大,pinpoint負擔最大,因爲hbase,zipkin和skywalking差不多。存儲都可以用es

另外,zipkin和skywalking屬於opentracing規範體系下,可以共享相同的手動埋點api,skywalking針對非rpc埋點,甚至只需要標註就可以,零開發成本。而pinpoint是必須學習開發插件的。

不算自己的東西,相對pinpoint,我肯定會喜歡zipkin。我能說不喜歡棒子和他們不靠譜的社區行爲麼…
還是feign的作者。opentracing起草者之一。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章