深入了解Zipkin和SkyWalking

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IQXX的頭像IQXX
上一篇 2024-11-01 14:06
下一篇 2024-11-01 14:06

相關推薦

  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • 深入了解scala-maven-plugin

    一、簡介 Scala-maven-plugin 是一個創造和管理 Scala 項目的maven插件,它可以自動生成基本項目結構、依賴配置、Scala文件等。使用它可以使我們專註於代…

    編程 2025-04-25
  • 深入了解LaTeX的腳註(latexfootnote)

    一、基本介紹 LaTeX作為一種排版軟體,具有各種各樣的功能,其中腳註(footnote)是一個十分重要的功能之一。在LaTeX中,腳註是用命令latexfootnote來實現的。…

    編程 2025-04-25
  • 深入理解Python字元串r

    一、r字元串的基本概念 r字元串(raw字元串)是指在Python中,以字母r為前綴的字元串。r字元串中的反斜杠(\)不會被轉義,而是被當作普通字元處理,這使得r字元串可以非常方便…

    編程 2025-04-25
  • 深入剖析MapStruct未生成實現類問題

    一、MapStruct簡介 MapStruct是一個Java bean映射器,它通過註解和代碼生成來在Java bean之間轉換成本類代碼,實現類型安全,簡單而不失靈活。 作為一個…

    編程 2025-04-25
  • 深入了解Python包

    一、包的概念 Python中一個程序就是一個模塊,而一個模塊可以引入另一個模塊,這樣就形成了包。包就是有多個模塊組成的一個大模塊,也可以看做是一個文件夾。包可以有效地組織代碼和數據…

    編程 2025-04-25
  • 深入探討馮諾依曼原理

    一、原理概述 馮諾依曼原理,又稱「存儲程序控制原理」,是指計算機的程序和數據都存儲在同一個存儲器中,並且通過一個統一的匯流排來傳輸數據。這個原理的提出,是計算機科學發展中的重大進展,…

    編程 2025-04-25

發表回復

登錄後才能評論