AlibabaCloud微服务下的链路追踪系统实战详解

news2024/11/19 6:18:33

🚀 作者 :“二当家-小D”
🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k8s等
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
🍅文末获取源码联系 配套笔记打包🍅

🔗往期文章传送门:

快速入门SpringCloudAlibaba实战篇【SpringBoot3.x + JDK17】!

高并发解决方案:Sentinel的流量控制、熔断与OpenFeign整合实战 !
构建微服务网关:SpringCloud Gateway快速入门!

目录

    • 一、 微服务架构下的排查问题复杂性概述
    • 二、 SpringCloud的链路追踪组件Sleuth实战
    • 三、 Spring Boot3.x整合Micrometer Tracing实战
    • 四、 微服务下的可视化链路追踪系统Zipkin实战
    • 五、链路追踪组件Zipkin+Micrometer Tracing整合实战
    • 六、 微服务链路追踪系统Zipkin持久化配置
    • 结束语

一、 微服务架构下的排查问题复杂性概述

简介:讲解微服务链路追踪系统的作用

  • 抛两个常见的问题

    • 微服务调用链路出现了问题怎么快速排查?
  • 微服务调用链路耗时长怎么定位是哪个服务?

  • 链路追踪系统

    • 分布式应用架构虽然满足了应用横向扩展的需求,但是运维和诊断的过程变得越来越复杂,例如会遇到接口诊断困难、应用性能诊断复杂、架构分析复杂等难题,传统的监控工具并无法满足,分布式链路系统由此诞生
  • 核心:将一次请求分布式调用,使用GPS定位串起来,记录每个调用的耗时、性能等日志,并通过可视化工具展示出来

  • 注意:

    • AlibabaCloud全家桶还没对应的链路追踪系统,我们使用Sleuth/Micrometer Tracing和zipking(内部使用的鹰眼)
    • 需要注意的是,Sleuth 已经停止对 Spring Boot 3 的支持,而后续的替代者是 Micrometer Tracing。Micrometer Tracing 提供了类似的接口和功能。
  • 链路追踪解决方案:

    • Micrometer Tracing:作为 Sleuth 的后继者,Micrometer Tracing 提供了更强大和灵活的追踪功能。推荐
    • Zipkin:这是一个开源的分布式追踪系统,它可以收集和可视化服务之间的调用关系。
    • Skywalking:这是一个功能丰富的分布式追踪和监控系统,它提供了全面的监控和分析功能。推荐

二、 SpringCloud的链路追踪组件Sleuth实战

简介:讲解什么Sleuth链路追踪系统

  • 什么是Sleuth

    • 一个组件,专门用于记录链路数据的开源组件

    • 文档:Spring Cloud Sleuth

    • 案例

      [order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false]
      
      第一个值,spring.application.name的值
      
      第二个值,96f95a0dd81fe3ab ,sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID
      
      第三个值,852ef4cfcdecabf3、spanid 基本的工作单元,获取元数据,如发送一个http
      
      第四个值:false,是否要将该信息输出到zipkin服务中来收集和展示。
      
  • 各个微服务添加依赖

    <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    
  • 启动服务,发送请求

    在这里插入图片描述

三、 Spring Boot3.x整合Micrometer Tracing实战

简介:讲解Micrometer Tracing介绍和部署实战

  • 什么是Micrometer Tracing

    • Spring Cloud Sleuth项目目前只维护到 3.1.9, 只支持到 Springboot 2.x 系列, 项目主页也说明了后续维护迁移到了 Micrometer Tracing 项目中。
      在这里插入图片描述
  • 如何迁移

    • 参考这篇文章Observability With Spring Boot 3 | Baeldung

    • 由于MicrometerTracing是一个门面工具自身并没有实现完整的链路追踪系统,具体的链路追踪另外需要引入的是第三方链路追踪系统的依赖。

      • micrometer-observation:一个基于度量库Micrometer的观测模块,用于收集应用程序的度量数据。
      • micrometer-tracing-bridge-brave:一个Micrometer模块,用于与分布式跟踪工具Brave 集成,以收集应用程序的分布式跟踪数据。
      • Brave是一个开源的分布式跟踪工具,它可以帮助用户在分布式系统中跟踪请求的流转。Brave使用一种称为"跟踪上下文"的机制,将请求的跟踪信息存储在请求的头部,然后将请求传递给下一个服务。在整个请求链中,Brave会将每个服务处理请求的时间和其他信息存储到跟踪数据中,以便用户可以了解整个请求的路径和性能。
    • 添加 Actuator Starter 和 Mircometer-Tracing-Bridge-Brave 的依赖

      <!-- Micrometer与Brave的追踪桥接器依赖 -->
      <dependency>
          <groupId>io.micrometer</groupId>
          <artifactId>micrometer-tracing-bridge-brave</artifactId>
      </dependency>
      <!-- Spring Boot的Actuator模块,用于监控和管理 -->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      
    • Actuator 提供了可观测部分的自动注入, Mircometer-Tracing-Bridge-Brave 则是对 Sleuth 底层 Brave 的依赖传递, 使应用上层无需改动使用方式。

    • 注意:使用Micrometer Tracing,跟踪traceid和spanid不会显示在日志中

      • 解决方案:使用千分尺跟踪时自动记录相关 ID ·问题 #33280

        logging:
          pattern:
            level: ${spring.application.name:},%X{traceId:-},%X{spanId:-}
        

        在这里插入图片描述

四、 微服务下的可视化链路追踪系统Zipkin实战

简介:讲解zipkin介绍和部署实战

  • 什么是zipkin

    • 官网
      • https://zipkin.io/
      • https://zipkin.io/pages/quickstart.html
    • 大规模分布式系统的APM工具(Application Performance Management),基于Google Dapper的基础实现,和sleuth结合可以提供可视化web界面分析调用链路耗时情况
  • 同类产品

    • 鹰眼(EagleEye)
    • CAT
    • twitter开源zipkin,结合sleuth
    • Pinpoint,运用JavaAgent字节码增强技术
  • StackDriver Trace (Google)

  • 开始使用

    • 安装包在资料里面,启动服务
    java -jar zipkin-server-3.3.0-exec.jar
    
    • 访问入口:http://127.0.0.1:9411/zipkin/
    • zipkin组成:Collector、Storage、Restful API、Web UI组成

    architecture-1

五、链路追踪组件Zipkin+Micrometer Tracing整合实战

简介:使用Zipkin+Micrometer Tracing业务分析调用链路分析实战

  • Micrometer Tracing收集跟踪信息通过http请求发送给zipkin server

  • zipkin server进行跟踪信息的存储以及提供Rest API即可

  • Zipkin UI调用其API接口进行数据展示默认存储是内存,可也用mysql 或者elasticsearch等存储

  • 微服务加入依赖

    <dependency>
        <groupId>io.zipkin.reporter2</groupId>
        <artifactId>zipkin-reporter-brave</artifactId>
    </dependency>
    
    • zipkin-reporter-brave:一个用于将Brave跟踪数据报告到Zipkin跟踪系统的库。
  • 配置地址和采样百分比配置

    management:
      zipkin:
        tracing:
          endpoint: http://localhost:9411/api/v2/spans
      tracing:
        sampling:
          probability: 1.0 #采样率默认为0.1(0.1就是10次只能有一次被记录下来),值越大收集越及时。
    #默认为0.1,即10%,这里配置1,是记录全部的sleuth信息,是为了收集到更多的数据(仅供测试用)。
    #在分布式系统中,过于频繁的采样会影响系统性能,所以这里配置需要采用一个合适的值。
    
  • 发送请求

    在这里插入图片描述

  • 点击依赖,查看整条链路

    在这里插入图片描述

六、 微服务链路追踪系统Zipkin持久化配置

简介:实战zipkin链路追踪日志持久化

  • 现存在的问题

    • 服务重启会导致链路追踪系统数据丢失
  • 持久化配置:mysql或者elasticsearch

    • 创建数据库表SQL脚本 (资料包里面有)
    • 启动命令
    java -jar java -jar zipkin-server-3.3.0-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin_log --MYSQL_USER=root --MYSQL_PASS=xdclass.net
    

结束语

今天的文章分享了微服务架构下的链路追踪技术,从SpringCloud的Sleuth入手,到Micrometer Tracing的整合,再到Zipkin的可视化链路追踪,最后实现链路追踪数据的持久化配置。通过这些希望能帮助大家更好地理解和运用微服务架构中的链路追踪技术,后面还会分享Skywalking的整合,大家记得关注。

今天的文章就到这了,关注D哥,下期分享更多关于SpringCloud Alibaba干货!

资料获取📚
完整代码和笔记已经准备好,如果有问题,可以在评论区留言讨论💬
原创不易,别忘了点赞👍+收藏⭐哦!
点击下方链接即可获取完整资料压缩包🎁,快来领取吧!↓↓↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1657528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深耕 Python】Quantum Computing 量子计算机(3)重要数学公式一览

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 正文 偏微分&#xff1a; 交换关系&#xff…

MATLAB 三维空间中在两点之间等间隔插入多个点 (67)

MATLAB 三维空间中在两点之间等间隔插入多个点 (67) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 用于加密直线点云,具体为根据给定的直线端点,沿着该直线方向,插入多个点,从而加密。具体方法和效果如下所示: 二、算法实现 1.代码 代码如下(示例): % 定…

数据的输入和输出

早期的总线系统 为了解决通信的问题、主板上铺设了一条公共线路、各个设备都连接到这条线路上、不管谁要和谁通信、都能使用它来传输、这条线路就是总线。 总线上有CPU、内存、鼠标、键盘、硬盘、网卡、声卡、显卡等… 说是一条总线、实际上是包含了传输数据的数据总线、传输…

【C++】继承 — 继承的引入、赋值切片详细讲解

前言 我们知道C语言是一门面向对象编程的语言&#xff0c;而面向对象编程有三大特性&#xff0c;它们分别是&#xff1a; 封装继承多态 目录 1. 继承的概念及定义1.1继承的概念1.2继承的定义格式1.3 继承的使用 2 基类和派生类对象赋值转换3 继承中的作用域3.1 派生类对象的存…

YOLOv9中模块总结补充|RepNCSPELAN4详图

专栏地址&#xff1a;目前售价售价69.9&#xff0c;改进点70 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 1. RepNCSPELAN4详图 RepNCSPELAN4是YOLOv9中的特征提取-融合模块&#xff0c;类似前几…

【Java基础】设计模式——单例设计模式

单例设计模式&#xff08;Singleton Design Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保⼀个类有且只有⼀个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。 单例模式主要解决的是&#xff0c;⼀个全局使⽤的类频繁的创建和消费&#xff0c;从⽽提…

信通院智能体标准发布,实在智能牵头编写

4月28日&#xff0c;由人工智能关键技术和应用评测工业和信息化部重点实验室、中国信息通信研究院&#xff08;以下简称&#xff1a;中国信通院&#xff09;人工智能研究所共同主办的“人工智能”高质量发展研讨会顺利召开&#xff0c;会上中国信通院正式发布全国首个Agent&…

Java12基础(Package包 作用域 String字符串)

目录 一. Package包 import关键字 命名规范 二. 作用域 三. String字符串(进阶) 创建方式: 内存情况: 1. 字符串的搜索 2. trim()方法 3. 替换字符串 4. 分割字符串 5. 拼接字符串 6. 格式化字符串 7. 类型转换 8. 转换为char[ ]字符数组 9. 字符编码 10. Str…

抖店内卷严重,平台规则繁琐,商家如何应对这种现状?

我是王路飞。 随着抖音的快速发展和扩张&#xff0c;抖音电商版块也在不断演进玩法和提高门槛。 然而也正是走的太快了&#xff0c;导致很多商家已经有些跟不上平台的繁琐规则。 压力更大的是&#xff0c;抖音电商的内卷逐渐严重&#xff0c;很多人被迫成为了“六边形战士”…

Vulstack红队评估(一)

文章目录 一、环境搭建1、网络拓扑2、web服务器(win7)配置3、域控&#xff08;winserver2008&#xff09;配置4、域内机器&#xff08;windows 2003&#xff09;配置5、调试网络是否通常 二、web渗透1、信息搜集2、端口扫描3、目录扫描4、弱口令5、phpmyadmin getshell日志gets…

OPC :快速上手

本系列为OPC技术的快速上以及持续研究和技术实战专栏&#xff0c;将不定期更新。 本章节提供OPC系列技术博文的快速导航。 《OPC服务器简介和入门介绍》 《物联网平台如何为OPC服务器创造新生命力》 《OPC服务器开发之WtOPCSvr——开发文档&#xff08;1&#xff09;》 《OPC服…

Linux 磁盘管理命令fdisk mount umount mkfs mkfs.ext2

文章目录 3.Linux 磁盘管理命令3.4 fdisk&#xff1a;磁盘分区案例练习 3.5 mount&#xff1a;挂载文件系统案例练习 3.6 umount&#xff1a;卸载文件系统案例练习 3.7 mkfs&#xff1a;建立各种文件系统案例练习 3.8 mkfs.ext2&#xff1a;建立一个 Ext2/Ext3 文件系统案例练习…

番外篇 | YOLOv8改进之在C2f中引入MSBlock模块(来源于YOLO-MS) | 轻量化网络结构

前言:Hello大家好,我是小哥谈。YOLO-MS是一种基于YOLO(You Only Look Once)的目标检测算法,它利用多尺度特征图提取和融合的方式来检测不同尺度的物体。YOLO-MS在准确率和速度方面都有很好的表现,特别适用于实时场景下的物体检测。在YOLO-MS提出的一种针对于实时目标检测…

Python | Leetcode Python题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution:def climbStairs(self, n: int) -> int:a, b 1, 1for _ in range(n - 1):a, b b, a breturn b

新火种AI|AI让大家都变“土”了!

作者&#xff1a;一号 编辑&#xff1a;美美 AI不仅要把人变“土”&#xff0c;还要把人变多样。 这个世界&#xff0c;终究是变“土”了。 今年五一假期&#xff0c;一个名为“Remini”的AI修图APP火遍了全网。注意&#xff0c;是Remini&#xff0c;而不是Redmi&#xff0…

用Rust解决鸡兔同笼问题

目录 一、什么是鸡兔同笼问题&#xff1f; 二、用Rust解决鸡兔同笼问题 三、鸡兔同笼问题在实际生活中的应用有哪些&#xff1f; 一、什么是鸡兔同笼问题&#xff1f; 鸡兔同笼问题是一种古代著名的数学问题&#xff0c;用于训练逻辑思维和解决方程的能力。 鸡兔同笼问题起…

发布-订阅(Publish-Subscribe)C++实现

1、原理 发布-订阅&#xff08;Publish-Subscribe&#xff09;模式是一种消息传递模式&#xff0c;用于构建分布式系统中的通信机制。在这种模式下&#xff0c;消息的发送者&#xff08;发布者&#xff09;和消息的接收者&#xff08;订阅者&#xff09;之间通过一个称为“主题…

中国4月进口以美元计同比增长8.4%,出口同比增长1.5%

中国按美元计4月进出口同比增速均转负为正&#xff0c;双双超预期。 5月9日周四&#xff0c;海关总署公布数据显示&#xff0c;以美元计价&#xff0c;中国2024年4月进口同比增长8.4%至2201亿美元&#xff0c;前值同比下降1.9%&#xff0c;出口同比增长1.5%至2924.5亿美元&…

景源畅信:抖音小店有哪些人气品类?

抖音小店作为短视频平台中的一股清流&#xff0c;已经成为了众多商家和消费者关注的焦点。在这个平台上&#xff0c;有各种各样的商品琳琅满目&#xff0c;让人眼花缭乱。那么&#xff0c;抖音小店有哪些人气品类呢?下面就从四个不同的方面来详细阐述这个问题。 一、美妆护肤类…

华为eNSP Pro模拟器下载(普通账号可用)

好消息&#xff01;华为终于开放了普通账号使用权限&#xff01; 安装教程下载后见《指导手册-eNSP Pro V100R001C00.pdf》 华为eNSP Pro模拟器下载&#xff08;普通账号可用&#xff09; 下载地址 华为eNSP Pro模拟器下载&#xff08;普通账号可用&#xff09; - 下一朵云 …