一、Zipkin
Zipkin是一款開源的分散式系統跟蹤工具,它可以幫助我們準確的定位問題並解決它們。Zipkin的設計思想是將應用程序中的請求跟蹤和分析組織起來,以便於在分散式系統中發現延遲問題。Zipkin使用的是Google的Dapper論文中提到的Trace思想來實現分散式追蹤。
Zipkin通過將全局跟蹤信息映射到各種存儲系統(如Elasticsearch,Hadoop,Cassandra,MySQL)上來跟蹤各組件之間的交互。當我們需要分析一次請求時,我們可以使用Zipkin UI來查看、搜索和跟蹤單個請求在系統中的完整路徑。
接下來我們看一下Zipkin的設置和使用。
1、Maven配置
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
Zipkin server的Maven依賴配置如上所示。
2、啟動Zipkin server
$ java -jar zipkin-server-2.17.2-exec.jar
在啟動Zipkin server後,我們可以使用瀏覽器訪問http://localhost:9411查看Zipkin跟蹤數據,如下圖所示。
3、使用Zipkin進行跟蹤
Zipkin客戶端的基本配置如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
這裡我使用Spring Cloud中的Sleuth來實現Zipkin客戶端的跟蹤,Sleuth在服務調用之前會自動在請求頭部添加一些信息,並進行跟蹤。
我們可以通過Maven添加Sleuth依賴,如上所示。
接下來我們可以使用Spring Cloud Gateway和服務提供方進行測試。我們可以使用以下命令啟動服務提供方和服務網關。
$ java -jar eureka-server-0.0.1-SNAPSHOT.jar
$ java -jar eureka-client-0.0.1-SNAPSHOT.jar
$ java -jar api-gateway-0.0.1-SNAPSHOT.jar
最後我們可以訪問http://localhost:9411/zipkin/來查看Zipkin的數據跟蹤。
二、SkyWalking
SkyWalking是一款基於APM(應用性能監控)的開源分散式系統追蹤系統。它旨在提供完整的分散式跟蹤、服務網格遙測分析、度量聚合和可視化解決方案。
SkyWalking的架構如下圖所示:
SkyWalking核心部分包括Agent、Collector和UI三個模塊。
- Agent:負責向Collector發送追蹤數據。
- Collector:負責接收Agent發送的追蹤數據、存儲和聚合這些數據,並將它們提供給UI模塊。
- UI:提供用戶界面和數據可視化工具,以便我們能夠查看追蹤信息和趨勢圖表。
Skywalking的高級特性主要包括:
- 跨進程跟蹤(並擴展到基於消息的架構)
- 基於鏈路、一次請求跟蹤
- 性能指標聚合、降級
- 報警
- 可視化分析
接下來我們看一下SkyWalking的設置和使用。
1、Maven配置
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.4.0</version>
</dependency>
這裡我使用的是SkyWalking Toolkit進行跟蹤,我們可以添加上面的Maven依賴。
2、啟動Skywalking服務端
我們可以使用如下命令啟動SkyWalking服務端:
$ java -jar apache-skywalking-apm-incubating-bin/agent/skywalking-agent.jar
啟動完成後,我們可以訪問http://localhost:8080/ui查看SkyWalking的UI界面。
3、使用SkyWalking進行跟蹤
我們可以使用以下代碼創建一個方法,並在其中添加註釋。
public void test() {
Tracer tracer = TracerFactory.instance().getTracer();
TracerSpan span = tracer.createSpan("test");
try {
span.log("Hello World!");
Thread.sleep(1000L);
span.log("Goodbye World!");
} catch (Exception e) {
span.errorOccurred();
} finally {
span.finish();
}
}
在這裡我們使用SkyWalking的Tracer和TracerSpan來創建和跟蹤一個應用程序。
最後,我們可以訪問SkyWalking的UI界面來查看跟蹤信息和趨勢圖表。
總結
通過本文的介紹,我們可以了解到Zipkin和SkyWalking的基本概念、使用方法以及二者的區別。在實際的程序開發過程中,根據我們的需求和場景可以選擇使用其中之一來進行分散式系統的追蹤和監測。
原創文章,作者:IQXX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147164.html