目前分布式鏈路追蹤系統(tǒng)基本都是根據(jù)谷歌的《Dapper大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)》這篇論文發(fā)展而來,主流的有zipkin,pinpoint亚亲,skywalking,cat腐缤,jaeger等捌归。
本次APM系統(tǒng)選型主要對比pinpoint和skywalking。直接否定了zipkin和cat岭粤。因為zipkin和cat對代碼有一定的侵入性惜索,這是我不能接受的。而pinpoint和skywalking都是基于字節(jié)碼注入技術(shù)剃浇,可以做到完全的代碼無侵入巾兆。對現(xiàn)有系統(tǒng)的改造極小。
1偿渡,社區(qū)比較
skywalking最近剛剛完成apache孵化臼寄,已成為 Apache 基金會頂級項目。skywalking完全由國人主導開發(fā)溜宽,在國內(nèi)社區(qū)相當活躍吉拳。我們能夠進入官方群(Apache SkyWalking交流群:392443393)和項目發(fā)起人吳晟零距離溝通,很多問題能第一時間得到大家的幫助(玩過開源的都知道适揉,這個價值有多大)留攒。
pinpoint是韓國公司開發(fā),在社區(qū)交流上會有一定滯后嫉嘀。
在社區(qū)角度比較炼邀,skywalking是完全占優(yōu)的。
2剪侮,支持語言比較
Pinpoint只支持Java和PHP拭宁,而skywalking支持5種語言:Java, C#, PHP, Node.js, Go洛退。如果公司的服務涉及到多個開發(fā)語言,那么skywalking會是你更好的選擇杰标。并且兵怯,如果你要實現(xiàn)自己的探針(比如python語言),skywalking的二次開發(fā)成本也比Pinpoint更低腔剂。
3媒区,存儲比較
在大數(shù)據(jù)方面,底層存儲架構(gòu)決定上層功能掸犬。
pingpoint只支持hbase袜漩,這就意味著,使用pinpoint必須有能力運維住一套Hbase集群湾碎。
skywalking支持es宙攻,h2,mysql,TiDb,sharding-sphere∈ぜ耄可選類型比較多粘优,可以根據(jù)自己團隊的技術(shù)實力選擇仇味。其實生產(chǎn)上來說還是用es的較多呻顽。
hbase和es比較,hbase強在存儲能力丹墨,es強在查詢能力廊遍。
4,UI比較
原生ui上比較,pinpoint要比skywalking好贩挣。
但是skywalking有一款第三方定制UI喉前,做的又比pinpoint漂亮
5,JVM監(jiān)控
skywalking支持監(jiān)控:Heap, Non-Heap, GC(YGC和FGC)王财。 Pinpoint能夠監(jiān)控的指標主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory卵迂,但是沒有YGC。另外绒净,Pinpoint還支持多個指標同一時間點查看的功能见咒。如下圖所示:
所以,對JVM的監(jiān)控方面挂疆,Pinpoint更勝一籌改览。
6,服務監(jiān)控
包括操作系統(tǒng)缤言,和部署的服務實例的監(jiān)控宝当。 Pinpoint支持的維度有:CPU使用率,Open File Descriptor胆萧,數(shù)據(jù)源庆揩,活動線程數(shù),RT,TPS订晌。 skywalking支持的維度有:CPU使用率犬性,SLA,RT腾仅,CPM(Call Per Minutes)乒裆。 所以,這方面兩者旗鼓相當推励,沒有明顯的差距鹤耍。
7,跟蹤粒度比較
Pinpoint在這方面做的非常好验辞,跟蹤粒度非常細稿黄。如下圖所示,是Pinpoint對某個接口的trace信息:
而同一個接口skywalking的trace信息如下圖所示:
通過對比發(fā)現(xiàn)跌造,在跟蹤粒度方面杆怕,Pinpoint更勝一籌。
8壳贪,過濾追蹤
Pinpoint和skywalking都可以實現(xiàn)陵珍,而且配置的表達式都是基于ant風格。 Pinpoint在Web UI上配置 filter wizard 即可自定義過濾追蹤违施。 skywalking通過加載apm-trace-ignore-plugin插件就能自定義過濾跟蹤互纯,skywalking這種方式更靈活,比如一臺高配服務器上有若干個服務磕蒲,在共用的agent配置文件apm-trace-ignore-plugin.config中可以配置通用的過濾規(guī)則留潦,然后通過-D的方式為每個服務配置個性化過濾。
所以辣往,在過濾追蹤方面兔院,skywalking更勝一籌。
總結(jié)
經(jīng)過前面對skywalking和Pinpoint全方位對比后我們發(fā)現(xiàn)站削,對于兩款非常優(yōu)秀的APM軟件坊萝,有一種既生瑜何生亮的感覺。Pinpoint的優(yōu)勢在于:追蹤數(shù)據(jù)粒度非常細钻哩、功能強大的用戶界面屹堰,以及使用HBase作為存儲帶來的海量存儲能力。而skywalking的優(yōu)勢在于:非辰智猓活躍的中文社區(qū)扯键,支持多種語言的探針,對國產(chǎn)開源軟件非常全面的支持珊肃,以及使用es作為底層存儲帶來的強大的檢索能力荣刑,并且skywalking的擴展性以及定制化要更優(yōu)于Pinpoint:
- 如果你有海量的日志存儲需求馅笙,推薦Pinpoint。
- 如果你更看重二次開發(fā)的便捷性厉亏,推薦skywalking董习。
最后,參考上面的對比爱只,結(jié)合你的需求皿淋,哪些不能妥協(xié),哪些可以舍棄恬试,從而更好的選擇一款最適合你的APM軟件窝趣。
參考資料:
http://skywalking.apache.org/zh/blog/2019-02-24-skywalking-pk-pinpoint.html