最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sleuth(Micrometer)+ZipKin分布式鏈路問題小結(jié)

 更新時間:2024年10月25日 09:46:29   作者:changming06  
在微服務(wù)架構(gòu)中,分布式鏈路追蹤技術(shù)成為了解決系統(tǒng)復(fù)雜調(diào)用問題的關(guān)鍵,本文介紹了其他鏈路追蹤方案,如Cat、Pinpoint和Skywalking,展示了分布式鏈路追蹤技術(shù)的多樣化,感興趣的朋友一起看看吧

1.Sleuth進(jìn)入維護(hù)模式

替代方案 -> Micrometer Tracing

2.分布式鏈路追蹤概述

2.1 出現(xiàn)背景

在微服務(wù)框架中,一個由客戶端發(fā)起的請求在后端系統(tǒng)中會經(jīng)過多個不同的服務(wù)節(jié)點調(diào)用來協(xié)調(diào)產(chǎn)生最后的結(jié)果,每一個前端請求都會形成一條復(fù)雜的分布式服務(wù)調(diào)用鏈路,鏈路中的任何一環(huán)出現(xiàn)高延時或錯誤都會引起整個請求最后的失敗。

隨著系統(tǒng)的復(fù)雜化,導(dǎo)致微服務(wù)的增多,調(diào)用鏈路的變長

2.2 要解決的問題

在大規(guī)模分布式與微服務(wù)集群下,如何實時的觀測系統(tǒng)的整體調(diào)用鏈路情況、如何快速發(fā)現(xiàn)并定位到問題、如何盡可能精確的判斷故障對系統(tǒng)的影響范圍與影響程度、如何盡可能精確的梳理出服務(wù)之間的依賴關(guān)系,并判斷出服務(wù)之間的依賴關(guān)系是否合理、如何盡可能精確的分析整個系統(tǒng)調(diào)用鏈路的性能與瓶頸點、如何盡可能精確的分析系統(tǒng)的存儲瓶頸與容量規(guī)劃。

分布式鏈路追蹤技術(shù)要解決的問題,分布式鏈路追蹤(Distributed Tracing),就是將一次分布式請求還原成調(diào)用鏈路,進(jìn)行日志記錄,性能監(jiān)控并將一次分布式請求的調(diào)用情況集中展示。比如各個服務(wù)節(jié)點上的耗時、請求具體到達(dá)哪臺機器上、每個服務(wù)節(jié)點的請求狀態(tài)等等。

3.新一代Spring Cloud Sleuth:Micrometer

3.1 相關(guān)地址

Micrometer官網(wǎng)

Sleuth官網(wǎng)

Sleuth_GItHub地址

Spring Cloud Sleuth will not work with Spring Boot 3.x onward. The last major version of Spring Boot that Sleuth will support is 2.x.

GitHub介紹,Spring Clour Sleuth不支持SpringBoot 3.x。

3.2 ZipKin

Micrometer負(fù)責(zé)收集數(shù)據(jù),ZipKin復(fù)雜數(shù)據(jù)的展現(xiàn)。因為收集到的數(shù)據(jù)是一個個節(jié)點,不直觀。

3.3 小總結(jié)

將前端請求到,后端系統(tǒng)響應(yīng)結(jié)果的這個過程中,所走過的分布式節(jié)點,進(jìn)行日志記錄和性能監(jiān)控,并進(jìn)行Web展示。

3.4 其他的分布式鏈路追蹤的解決方案

技術(shù)說明
Cat由大眾點評開源,基于Java開發(fā)的實時應(yīng)用監(jiān)控平臺,包括實時應(yīng)用監(jiān)控,業(yè)務(wù)監(jiān)控。集成方案是通過代碼埋點的方式來實現(xiàn)監(jiān)控,比如:攔截器,過濾器等。對代碼的侵入性很大,集成成本較高。風(fēng)險較大。
ZipKin由大眾點評開源,基于Java開發(fā)的實時應(yīng)用監(jiān)控平臺,包括實時應(yīng)用監(jiān)控,業(yè)務(wù)監(jiān)控。集成方案是通過代碼埋點的方式來實現(xiàn)監(jiān)控,比如:攔截器,過濾器等。對代碼的侵入性很大,集成成本較高。風(fēng)險較大。
PinpointPinpoint是一款開源的基于字節(jié)碼注入的調(diào)用鏈分析,以及應(yīng)用監(jiān)控分析工具。特點是支持多種插件,UI功能強大,接入端無代碼侵入。
SkywalkingSkywalking是國人開源的基于字節(jié)碼注入的調(diào)用鏈分析,以及應(yīng)用監(jiān)控分析工具。特點是支持多種插件,UI功能較強,接入端無代碼侵入。

4.分布式鏈路追蹤原理

一條鏈路通過Trace Id唯一標(biāo)識,Span標(biāo)識發(fā)起的請求信息,各span通過parent id 關(guān)聯(lián)起來

5.Zipkin

5.1 官網(wǎng)

https://zipkin.io

5.2 概述

Zipkin是一種分布式鏈路跟蹤系統(tǒng)圖形化的工具,Zipkin 是 Twitter 開源的分布式跟蹤系統(tǒng),能夠收集微服務(wù)運行過程中的實時調(diào)用鏈路信息,并能夠?qū)?code>這些調(diào)用鏈路信息展示到Web圖形化界面上供開發(fā)人員分析,開發(fā)人員能夠從ZipKin中分析出調(diào)用鏈路中的性能瓶頸,識別出存在問題的應(yīng)用程序,進(jìn)而定位問題和解決問題。

5.3 下載地址

https://zipkin.io/pages/quickstart.html

In this section we’ll walk through building and starting an instance of Zipkin for checking out Zipkin locally. There are three options: using Java, Docker or running from source.

java 方式,下載的是jar包,直接執(zhí)行就好。

6.案例

6.1 Micrometer和Zipkin分工

Micrometer 采集數(shù)據(jù),Zipkin圖像展示

6.2 總體父工程POM

新增的

<properties>
    <micrometer-tracing.version>1.2.0</micrometer-tracing.version>
    <micrometer-observation.version>1.12.0</micrometer-observation.version>
    <feign-micrometer.version>12.5</feign-micrometer.version>
    <zipkin-reporter-brave.version>2.17.0</zipkin-reporter-brave.version>
</properties>
<!--micrometer-tracing-bom導(dǎo)入鏈路追蹤版本中心  1-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bom</artifactId>
    <version>${micrometer-tracing.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--micrometer-tracing指標(biāo)追蹤  2-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
    <version>${micrometer-tracing.version}</version>
</dependency>
<!--micrometer-tracing-bridge-brave適配zipkin的橋接包 3-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
    <version>${micrometer-tracing.version}</version>
</dependency>
<!--micrometer-observation 4-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-observation</artifactId>
    <version>${micrometer-observation.version}</version>
</dependency>
<!--feign-micrometer 5-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
    <version>${feign-micrometer.version}</version>
</dependency>
<!--zipkin-reporter-brave 6-->
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
    <version>${zipkin-reporter-brave.version}</version>
</dependency>

由于Micrometer Tracing是一個門面工具自身并沒有實現(xiàn)完整的鏈路追蹤系統(tǒng),具體的鏈路追蹤另外需要引入的是第三方鏈路追蹤系統(tǒng)的依賴。

引入組件說明

micrometer-tracing-bom:導(dǎo)入鏈路追蹤版本中心,體系化說明

micrometer-tracing:指標(biāo)追蹤

micrometer-tracing-bridge-brave:一個Micrometer模塊,用于與分布式跟蹤工具 Brave 集成,以收集應(yīng)用程序的分布式跟蹤數(shù)據(jù)。Brave是一個開源的分布式跟蹤工具,它可以幫助用戶在分布式系統(tǒng)中跟蹤請求的流轉(zhuǎn),它使用一種稱為"跟蹤上下文"的機制,將請求的跟蹤信息存儲在請求的頭部,然后將請求傳遞給下一個服務(wù)。在整個請求鏈中,Brave會將每個服務(wù)處理請求的時間和其他信息存儲到跟蹤數(shù)據(jù)中,以便用戶可以了解整個請求的路徑和性能。

micrometer-observation:一個基于度量庫 Micrometer的觀測模塊,用于收集應(yīng)用程序的度量數(shù)據(jù)。

feign-micrometer:一個Feign HTTP客戶端的Micrometer模塊,用于收集客戶端請求的度量數(shù)據(jù)。

zipkin-reporter-brave:一個用于將 Brave 跟蹤數(shù)據(jù)報告到Zipkin 跟蹤系統(tǒng)的庫。

補充包:spring-boot-starter-actuator SpringBoot框架的一個模塊用于監(jiān)視和管理應(yīng)用程序。

6.3 服務(wù)提供者8001修改

6.3.1 pom修改

micrometer-tracing-bom不用引入

<!--micrometer-tracing指標(biāo)追蹤  1-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
</dependency>
<!--micrometer-tracing-bridge-brave適配zipkin的橋接包 2-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<!--micrometer-observation 3-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-observation</artifactId>
</dependency>
<!--feign-micrometer 4-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
</dependency>
<!--zipkin-reporter-brave 5-->
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>

6.3.2 YML修改

# ========================zipkin===================
management:
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans
  tracing:
    sampling:
      probability: 1.0 #采樣率默認(rèn)為0.1(0.1就是10次只能有一次被記錄下來),值越大收集越及時。

6.3.3 新建PayMicrometerController

import cn.hutool.core.util.IdUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
public class PayMicrometerController {
    /**
     * Micrometer(Sleuth)進(jìn)行鏈路監(jiān)控的例子
     * @param id
     * @return
     */
    @GetMapping(value = "/pay/micrometer/{id}")
    public String myMicrometer(@PathVariable("id") Integer id)
    {
        return "Hello, 歡迎到來myMicrometer inputId:  "+id+" \t    服務(wù)返回:" + IdUtil.simpleUUID();
    }
}

6.4 API接口PayFeignApi修改

@GetMapping(value = "/pay/micrometer/{id}")
String myMicrometer(@PathVariable("id") Integer id);

6.5 服務(wù)調(diào)用者80修改

6.5.1 POM

 <!--micrometer-tracing指標(biāo)追蹤  1-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
</dependency>
<!--micrometer-tracing-bridge-brave適配zipkin的橋接包 2-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<!--micrometer-observation 3-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-observation</artifactId>
</dependency>
<!--feign-micrometer 4-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
</dependency>
<!--zipkin-reporter-brave 5-->
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>

6.5.2 YML修改

# zipkin圖形展現(xiàn)地址和采樣率設(shè)置
management:
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans
  tracing:
    sampling:
      probability: 1.0 #采樣率默認(rèn)為0.1(0.1就是10次只能有一次被記錄下來),值越大收集越及時。

6.5.3 業(yè)務(wù)類修改

import com.atguigu.cloud.apis.PayFeignApi;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class OrderMicrometerController
{
    @Resource
    private PayFeignApi payFeignApi;
    @GetMapping(value = "/feign/micrometer/{id}")
    public String myMicrometer(@PathVariable("id") Integer id)
    {
        return payFeignApi.myMicrometer(id);
    }
}

7.測試

訪問 localhost:x/feign/micrometer/1,會看到

{"code":"500","message":"No fallback available.","data":null,"timestamp":1729692505995}

進(jìn)入http://localhost:9411/

可以看到依賴關(guān)系,以及執(zhí)行時間等

從本章節(jié),也可以看出來,約定大于配置的思想體現(xiàn),事先配置好各組件的版本信息,事半功倍。

到此這篇關(guān)于Sleuth(Micrometer)+ZipKin分布式鏈路追逐的文章就介紹到這了,更多相關(guān)Sleuth ZipKin分布式鏈路內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android Studio中ButterKnife插件的安裝與使用詳解

    Android Studio中ButterKnife插件的安裝與使用詳解

    本篇文章主要介紹了Android Studio中ButterKnife插件的安裝與使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 一起來了解Java的File類和IO流

    一起來了解Java的File類和IO流

    這篇文章主要為大家詳細(xì)介紹了Java?File類和IO流,在Java學(xué)習(xí)中,file類與io流是非常重要的部分,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • spring 整合kafka監(jiān)聽消費的配置過程

    spring 整合kafka監(jiān)聽消費的配置過程

    這篇文章主要介紹了spring 整合kafka監(jiān)聽消費的配置過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 一文詳解Java中的JSON數(shù)據(jù)處理指南

    一文詳解Java中的JSON數(shù)據(jù)處理指南

    JSON作為一種輕量級的數(shù)據(jù)交換格式,在Web服務(wù)和應(yīng)用程序之間廣泛使用,本文詳細(xì)介紹了在Java中解析和操作JSON數(shù)據(jù)的步驟,包括導(dǎo)入庫、創(chuàng)建JSON對象和數(shù)組、讀取數(shù)據(jù)、創(chuàng)建和序列化JSON對象,以及錯誤處理等,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • SpringBoot統(tǒng)一返回JSON格式實現(xiàn)方法詳解

    SpringBoot統(tǒng)一返回JSON格式實現(xiàn)方法詳解

    這篇文章主要介紹了SpringBoot統(tǒng)一返回JSON格式實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Java數(shù)據(jù)長度獲取方式對比之length屬性、length()和size()方法詳解

    Java數(shù)據(jù)長度獲取方式對比之length屬性、length()和size()方法詳解

    在Java編程語言中l(wèi)ength、length()和size()是三個常見的用來獲取不同數(shù)據(jù)類型對象長度或大小的方法,但它們各自適用于不同的上下文,這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)長度獲取方式對比之length屬性、length()和size()方法詳解
    2024-07-07
  • 基于令牌桶的限流器注解的簡單實現(xiàn)詳解

    基于令牌桶的限流器注解的簡單實現(xiàn)詳解

    令牌桶算法是一種常用的流量控制算法,用于限制請求或事件的發(fā)生速率,這篇文章主要介紹了如何基于令牌桶實現(xiàn)限流器注解,需要的可以參考一下
    2023-08-08
  • 使用feign傳遞參數(shù)類型為MultipartFile的問題

    使用feign傳遞參數(shù)類型為MultipartFile的問題

    這篇文章主要介紹了使用feign傳遞參數(shù)類型為MultipartFile的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Elasticsearch深度分頁問題的解決方案詳解

    Elasticsearch深度分頁問題的解決方案詳解

    ES?是分布式搜索引擎,數(shù)據(jù)分布在多個分片上,本文將深入探討Elasticsearch深度分頁問題及其解決方案,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-03-03
  • 使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值

    使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值

    這篇文章主要介紹了使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評論

夏河县| 文昌市| 洱源县| 乌苏市| 信丰县| 铜梁县| 金昌市| 收藏| 南召县| 仪陇县| 湖口县| 措美县| 二手房| 元朗区| 朝阳区| 密云县| 临颍县| 湖口县| 堆龙德庆县| 阜康市| 从化市| 岳普湖县| 黑山县| 阿城市| 南皮县| 辰溪县| 新安县| 南京市| 台中市| 九江市| 恩平市| 和静县| 松江区| 新乡市| 南丹县| 南昌县| 松原市| 竹北市| 秦皇岛市| 湖口县| 沙洋县|