簡介
-
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湊數 | |
開發者 | 韓國 | 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起草者之一。