全鏈路追蹤技術選型:pinpoint vs skywalking

目前分佈式鏈路追蹤系統基本都是根據谷歌的《Dapper大規模分佈式系統的跟蹤系統》這篇論文發展而來,主流的有zipkin,pinpoint,skywalking,cat,jaeger等。

本次APM系統選型主要對比pinpoint和skywalking。直接否定了zipkin和cat。因為zipkin和cat對代碼有一定的侵入性,這是我不能接受的。而pinpoint和skywalking都是基於字節碼注入技術,可以做到完全的代碼無侵入。對現有系統的改造極小。

全鏈路追蹤技術選型:pinpoint vs skywalking

1,社區比較

skywalking最近剛剛完成apache孵化,已成為 Apache 基金會頂級項目。skywalking完全由國人主導開發,在國內社區相當活躍。我們能夠進入官方群(Apache SkyWalking交流群:392443393)和項目發起人吳晟零距離溝通,很多問題能第一時間得到大家的幫助(玩過開源的都知道,這個價值有多大)。

pinpoint是韓國公司開發,在社區交流上會有一定滯後。

在社區角度比較,skywalking是完全佔優的。

2,支持語言比較

Pinpoint只支持Java和PHP,而skywalking支持5種語言:Java, C#, PHP, Node.js, Go。如果公司的服務涉及到多個開發語言,那麼skywalking會是你更好的選擇。並且,如果你要實現自己的探針(比如python語言),skywalking的二次開發成本也比Pinpoint更低。

3,存儲比較

在大數據方面,底層存儲架構決定上層功能。

pingpoint只支持hbase,這就意味著,使用pinpoint必須有能力運維住一套Hbase集群。

skywalking支持es,h2,mysql,TiDb,sharding-sphere。可選類型比較多,可以根據自己團隊的技術實力選擇。其實生產上來說還是用es的較多。

hbase和es比較,hbase強在存儲能力,es強在查詢能力。

4,UI比較

原生ui上比較,pinpoint要比skywalking好。

全鏈路追蹤技術選型:pinpoint vs skywalking

全鏈路追蹤技術選型:pinpoint vs skywalking

但是skywalking有一款第三方定製UI,做的又比pinpoint漂亮

5,JVM監控

skywalking支持監控:Heap, Non-Heap, GC(YGC和FGC)。 Pinpoint能夠監控的指標主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory,但是沒有YGC。另外,Pinpoint還支持多個指標同一時間點查看的功能。如下圖所示:

所以,對JVM的監控方面,Pinpoint更勝一籌。

6,服務監控

包括操作系統,和部署的服務實例的監控。 Pinpoint支持的維度有:CPU使用率,Open File Descriptor,數據源,活動線程數,RT,TPS。 skywalking支持的維度有:CPU使用率,SLA,RT,CPM(Call Per Minutes)。 所以,這方面兩者旗鼓相當,沒有明顯的差距。

7,跟蹤粒度比較

Pinpoint在這方面做的非常好,跟蹤粒度非常細。如下圖所示,是Pinpoint對某個接口的trace信息:

全鏈路追蹤技術選型:pinpoint vs skywalking

而同一個接口skywalking的trace信息如下圖所示:

全鏈路追蹤技術選型:pinpoint vs skywalking

全鏈路追蹤技術選型:pinpoint vs skywalking

通過對比發現,在跟蹤粒度方面,Pinpoint更勝一籌

8,過濾追蹤

Pinpoint和skywalking都可以實現,而且配置的表達式都是基於ant風格。 Pinpoint在Web UI上配置 filter wizard 即可自定義過濾追蹤。 skywalking通過加載apm-trace-ignore-plugin插件就能自定義過濾跟蹤,skywalking這種方式更靈活,比如一臺高配服務器上有若干個服務,在共用的agent配置文件apm-trace-ignore-plugin.config中可以配置通用的過濾規則,然後通過-D的方式為每個服務配置個性化過濾。

所以,在過濾追蹤方面,skywalking更勝一籌

總結

經過前面對skywalking和Pinpoint全方位對比後我們發現,對於兩款非常優秀的APM軟件,有一種既生瑜何生亮的感覺。Pinpoint的優勢在於:追蹤數據粒度非常細、功能強大的用戶界面,以及使用HBase作為存儲帶來的海量存儲能力。而skywalking的優勢在於:非常活躍的中文社區,支持多種語言的探針,對國產開源軟件非常全面的支持,以及使用es作為底層存儲帶來的強大的檢索能力,並且skywalking的擴展性以及定製化要更優於Pinpoint:

  • 如果你有海量的日誌存儲需求,推薦Pinpoint。
  • 如果你更看重二次開發的便捷性,推薦skywalking。

最後,參考上面的對比,結合你的需求,哪些不能妥協,哪些可以捨棄,從而更好的選擇一款最適合你的APM軟件。

http://skywalking.apache.org/zh/blog/2019-02-24-skywalking-pk-pinpoint.html


分享到:


相關文章: