分布式調用鏈調研(pinpoint,skywalking,jaeger,zipkin等對比)
2020-10-10
轉自: 分布式調用鏈調研(pinpoint,skywalking,jaeger,zipkin等對比)
目錄
1. APM簡述
2. APM主要解決的問題
3. 分布式調用追蹤(APM)一覽
4. 方案對比
5. 各方案參考鏈接
6. 參考資料
1. APM簡述
APM (Application Performance Management)是對企業的應用系統進行實時監控,它是用於實現對應用程序性能管理和故障管理的系統化的解決方案。
2. APM主要解決的問題
- 集中式度量系統
- 分布式全鏈接追蹤系統
- 集中式日志系統(elk)
3. 分布式調用追蹤(APM)一覽
- google的Drapper--未開源,最早的APM
- 阿里-鷹眼--未開源
- 大眾點評——CAT--跨服務的跟蹤功能與點評內部的RPC框架集成,這部分未開源且項目在2014.1已經停止維護。服務粒度的監控,通過代碼埋點的方式來實現監控,比如: 攔截器,注解,過濾器等,對代碼的侵入性較大,集成成本較高。
- Hydra-京東: 與dubbo框架集成,對於服務級別的跟蹤統計,現有業務可以無縫接入。對於細粒度的興趣點,需要業務人員手動添加.開源項目已於2013年6月停止維護
- PinPoint-naver,字節碼探針技術,代碼無侵入,體系完善不易修改,支持java,技術棧支持dubbo.其他語言社區支援中
- zipkin--java方便集成於springcloud,社區支持的插件也包括dubbo,rabbit,mysql,httpclient等(https://github.com/openzipkin/brave/tree/master/instrumentation),同時支持php,go,js等語言客戶端,界面功能較為簡單,本身無告警功能,可能需要二次開發。代碼入侵度小。
- uber-jaeger, Jaeger支持java/c++/go/node/php,在界面上較為完善(對比zipkin),但是也無告警功能。代碼入侵度小。dubbo目前無插件支持,可二次開發。
- skywalking -華為,類似於PinPoint,目前還在apache孵化中,網上吞吐量對比中強於pinpoint,實際未驗證。本身支持dubbo
4. 方案對比
pinpoint |
zipkin |
jaeger |
skywalking |
|
OpenTracing兼容 |
否 |
是 |
是 |
是 |
客戶端支持語言 |
java、php |
java,c#,go,php等 |
java,c#,go,php等 |
Java, .NET Core, NodeJS and PHP |
存儲 |
hbase |
ES,mysql,Cassandra,內存 |
ES,kafka,Cassandra,內存 |
ES,H2,mysql,TIDB,sharding sphere |
傳輸協議支持 |
thrift |
http,MQ |
udp/http |
gRPC |
ui豐富程度 |
高 |
低 |
中 |
中 |
實現方式-代碼侵入性 |
字節碼注入,無侵入 |
攔截請求,侵入 |
攔截請求,侵入 |
字節碼注入,無侵入 |
擴展性 |
低 |
高 |
高 |
中 |
trace查詢 |
不支持 |
支持 |
支持 |
支持 |
告警支持 |
支持 |
不支持 |
不支持 |
支持 |
jvm監控 |
支持 |
不支持 |
不支持 |
支持 |
性能損失 |
高 |
中 |
中 |
低 |
5. 各方案參考鏈接
1.pinpoint-naver
github: https://github.com/naver/pinpoint
docker快速體驗:https://github.com/naver/pinpoint-docker
2.zipkin-推特:
github: https://github.com/openzipkin/zipkin
頁面詳解:https://blog.csdn.net/u012394095/article/details/82585863
zipkin於php對接:https://www.colabug.com/1872361.html
3.jaeger-uber
部分參考資料:
jaeger簡介,部署,入門實踐 https://my.oschina.net/u/2548090/blog/1821359
jaeger——java實現 https://my.oschina.net/u/1789379/blog/1551421
Uber分布式追蹤系統Jaeger使用介紹和案例(PHP Hprose Go 跨語言調用)
https://segmentfault.com/a/1190000011636957
全鏈路監控Jaeger搭建實戰 https://www.jianshu.com/p/ffc597bb4ce8
jaeger官網快速開始 https://www.jaegertracing.io/docs/1.8/getting-started/
4.skywalking(推薦)
github: https://github.com/apache/incubator-skywalking
SkyWalking 分布式追蹤系統 https://www.jianshu.com/p/2fd56627a3cf
Apache SkyWalking 5.0中文版圖文詳解使用手冊
http://skywalking.apache.org/zh/blog/2018-12-18-Apache-SkyWalking-5-0-UserGuide.html
skywalking學習筆記 https://juejin.im/post/5ab5b0e26fb9a028e25d7fcb
6. 參考資料
分布式鏈路追蹤技術對比 https://blog.csdn.net/moonpure/article/details/79992855
回到網易后開源 APM 技術選型與實戰 https://www.infoq.cn/article/apm-Pinpoint-practice
zipkin vs jaeger https://segmentfault.com/a/1190000015308746
調用鏈選型之Zipkin,Pinpoint,SkyWalking,CAT https://www.jianshu.com/p/0fbbf99a236e