天天看點

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

作者:T鍋俠

APM(Application Performance Management)是應用性能管理的縮寫,是指通過監控和管理應用程式的運作狀态,分析應用程式的性能瓶頸,優化應用程式的性能和可用性,提高使用者體驗和滿意度的一系列活動。APM可以幫助開發者和運維人員快速定位和解決應用程式的問題,提高應用程式的品質和效率。

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

Zipkin、Pinpoint、SkyWalking和Elastic是目前比較流行的APM工具,它們各有優缺點和适用場景,下面對它們進行簡單的對比介紹。

Zipkin

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

Zipkin是一個開源的分布式跟蹤系統,由Twitter開發,基于Google的Dapper論文設計。Zipkin可以收集和展示微服務架構中各個服務之間的調用鍊路和時序資料,幫助使用者分析服務間的依賴關系和性能問題。

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

Zipkin的優點是:

  • 支援多種語言和架構,如Java、Python、Ruby、Go等
  • 支援多種存儲後端,如MySQL、Cassandra、Elasticsearch等
  • 支援多種傳輸協定,如HTTP、Kafka、RabbitMQ等
  • 支援多種采樣政策,如固定比例采樣、自适應采樣等
  • 支援多種資料可視化方式,如Web UI、Grafana等

Zipkin的缺點是:

  • 不支援全鍊路監控,隻能展示服務間的調用關系,不能展示服務内部的方法調用和資源消耗
  • 不支援告警功能,不能根據預設的規則和門檻值對異常情況進行通知
  • 不支援分布式事務跟蹤,不能追蹤跨服務的事務狀态和一緻性
  • 不支援動态配置,不能根據運作時的情況動态調整采樣率和傳輸方式

Zipkin适用于需要快速搭建一個簡單的分布式跟蹤系統,對全鍊路監控、告警功能和分布式事務跟蹤不太關注的場景。

Pinpoint

Pinpoint是一個開源的APM工具,由南韓NAVER公司開發,主要針對大規模分布式系統進行性能監控和故障診斷。Pinpoint可以收集和展示應用程式中各個元件之間的調用鍊路和時序資料,以及各個元件内部的方法調用和資源消耗。Pinpoint還可以根據預設的規則和門檻值對異常情況進行告警通知。

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

Pinpoint的優點是:

  • 支援Java和PHP兩種語言,覆寫了大部分的Web應用場景
  • 支援HBase作為存儲後端,具有高可用性和可擴充性
  • 支援TCP和UDP兩種傳輸協定,具有高效率和低延遲
  • 支援全鍊路監控,可以展示服務間和服務内部的調用關系和性能名額
  • 支援告警功能,可以根據預設的規則和門檻值對異常情況進行通知

Pinpoint的缺點是:

  • 不支援其他語言和架構,如Python、Ruby、Go等
  • 不支援其他存儲後端,如MySQL、Cassandra、Elasticsearch等
  • 不支援其他傳輸協定,如HTTP、Kafka、RabbitMQ等
  • 不支援分布式事務跟蹤,不能追蹤跨服務的事務狀态和一緻性
  • 不支援動态配置,不能根據運作時的情況動态調整采樣率和傳輸方式

Pinpoint适用于需要對大規模分布式系統進行全鍊路監控和告警功能,對語言和存儲後端的選擇不太靈活的場景。

SkyWalking

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

SkyWalking是一個開源的APM工具,由Apache軟體基金會孵化,主要針對雲原生、微服務和容器化架構進行觀測和分析。SkyWalking可以收集和展示應用程式中各個元件之間的調用鍊路和時序資料,以及各個元件内部的方法調用和資源消耗。SkyWalking還可以根據預設的規則和門檻值對異常情況進行告警通知。SkyWalking還支援分布式事務跟蹤,可以追蹤跨服務的事務狀态和一緻性。

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

SkyWalking的優點是:

  • 支援多種語言和架構,如Java、Python、Ruby、Go、Node.js等
  • 支援多種存儲後端,如Elasticsearch、MySQL、TiDB等
  • 支援多種傳輸協定,如HTTP、gRPC、Kafka等
  • 支援全鍊路監控,可以展示服務間和服務内部的調用關系和性能名額
  • 支援告警功能,可以根據預設的規則和門檻值對異常情況進行通知
  • 支援分布式事務跟蹤,可以追蹤跨服務的事務狀态和一緻性
  • 支援動态配置,可以根據運作時的情況動态調整采樣率和傳輸方式

SkyWalking的缺點是:

  • 可能在大資料量下有性能問題
  • 不支援UDP作為傳輸協定,可能在高并發下有丢包問題
  • 不支援自适應采樣,可能在高流量下有資料溢出問題

SkyWalking适用于需要對雲原生、微服務和容器化架構進行全鍊路監控、告警功能和分布式事務跟蹤,對語言和存儲後端的選擇比較靈活的場景。

Elastic

APM四大金剛Zipkin、Pinpoint、SkyWalking和Elastic大比拼

Elastic是一個開源的搜尋和分析平台,由Elastic公司開發,主要針對結構化和非結構化資料進行索引、查詢和可視化。Elastic可以收集和展示應用程式中各個元件之間的調用鍊路和時序資料,以及各個元件内部的方法調用和資源消耗。Elastic還可以根據預設的規則和門檻值對異常情況進行告警通知。Elastic還支援機器學習功能,可以對資料進行異常檢測、預測分析等。Elastic的優點是:

  • 支援多種語言和架構,如Java、Python、Ruby、Go、Node.js等
  • 支援Elasticsearch作為存儲後端,具有高可用性和可擴充性
  • 支援多種傳輸協定,如HTTP、Kafka、RabbitMQ等
  • 支援全鍊路監控,可以展示服務間和服務内部的調用關系和性能名額
  • 支援告警功能,可以根據預設的規則和門檻值對異常情況進行通知
  • 支援機器學習功能,可以對資料進行異常檢測、預測分析等

Elastic的缺點是:

  • 不支援其他存儲後端,如MySQL、Cassandra、HBase等
  • 不支援其他傳輸協定,如HTTP、Kafka、RabbitMQ等
  • 不支援分布式事務跟蹤,不能追蹤跨服務的事務狀态和一緻性
  • 不支援動态配置,不能根據運作時的情況動态調整采樣率和傳輸方式

Elastic APM适用于需要利用Elastic Stack進行搜尋和分析的場景,對存儲後端和傳輸協定不太挑剔的場景。

結論

Zipkin、Pinpoint、SkyWalking和Elastic是四個不同的APM工具,它們各有優缺點和适用場景。在選擇APM工具時,需要根據自己的應用程式特點和需求進行權衡和比較。希望本文能夠對你有所幫助。

最後, 來個笑話博您一樂:

一個程式員在使用Zipkin進行分布式跟蹤時,發現了一個奇怪的現象:他的服務A調用了服務B,但是服務B沒有傳回任何資料。他很納悶,就去問服務B的開發者。服務B的開發者說:“哦,那是因為我把服務B的監控改成了Pinpoint。”程式員問:“為什麼要改成Pinpoint?”服務B的開發者說:“因為Pinpoint支援告警功能啊。”程式員問:“那你告警了什麼?”服務B的開發者說:“我告警了服務A調用了我。”

繼續閱讀