Spring Cloud Sleuth+Zipkin服务链路追踪

前言:为什么要用链路追踪

        微服务架构是一个分布式架构,按照规则划分服务单元,一个分布式系统往往有很多个服务单元。服务单元数量多,业务复杂,出现错误和异常往往很难定位问题。主要体现在,一个请求可能需要调用多个服务,而内部服务的调用复杂,决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进请求有哪些服务参与,参与的顺序是怎样的,从而达到每个请求的步骤都是清晰可见的,能够快速定位问题。

一、Spring Cloud Sleuth简介

Spring Cloud Sleuth 为Spring Cloud提供了分布式跟踪解决方案的 API 。它与OpenZipkin Brave集成

Spring Cloud Sleuth 能够跟踪您的请求和消息,以便您可以将该通信与相应的日志条目关联起来。您还可以将跟踪信息导出到外部系统以可视化延迟。Spring Cloud Sleuth 直接支持OpenZipkin兼容系统。

基本术语

Spring Cloud Sleuth 借用了Dapper 的术语。

Span:基本工作单元。例如,发送 RPC 是一个新的 span,发送对 RPC 的响应也是如此。Span 还包含其他数据,例如描述、带时间戳的事件、键值注释(标签)、导致它们的 span 的 ID 以及进程 ID(通常是 IP 地址)。

Span 可以启动和停止,并且会跟踪其时间信息。创建 Span 后,您必须在未来某个时间点停止它。

跟踪:一组跨度,形成树状结构。例如,如果您运行分布式大数据存储,则跟踪可能由请求形成PUT

注释/事件:用于记录某个事件在某个时间点的存在。

从概念上讲,在典型的 RPC 场景中,我们标记这些事件以突出显示发生了什么样的动作(这并不意味着物理上会在跨度上设置这样的事件)。

  • cs:客户端已发送。客户端已发出请求。此注释表示 span 的开始。

  • sr:服务器已接收:服务器端收到请求并开始处理。cs从此时间戳中减去时间戳即可得出网络延迟。

  • ss:服务器已发送。在请求处理完成时(响应发送回客户端时)进行注释。sr从此时间戳中减去时间戳即可得出服务器端处理请求所需的时间。

  • cr:客户端已接收。表示跨度结束。客户端已成功接收来自服务器端的响应。cs从此时间戳中减去时间戳即可得出客户端从服务器接收响应所需的全部时间。

下图显示了SpanTrace在系统中的样子。

跟踪信息传播

下图展示了 span 的父子关系:

亲子关系

 二、整合Sleuth

1.服务的提供者与消费者导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

三、整合Zipkin可视化

通过Sleuth产生的调用链监控信息,可以得知微服务之间的调用链路,但是监控信息只能输出到控制台不方便查看。需要一个图形化的工具-zipkin。Zipkin是Twitter开源的分布式跟踪系统,主要用来收集系统的时序数据,从而跟踪系统的调用问题。

Zipkin官方:OpenZipkin · A distributed tracing system

1.安装zipkin服务器

docker安装:

docker run -d -p 9411:9411 openzipkin/zipkin

java安装:

如果你安装了 Java 17 或更高版本,最快的入门方法是将最新版本作为一个独立的可执行 jar 来获取:

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

 2.项目导入依赖

<!--        链路追踪zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>

说明:spring-cloud-starter-zipkin的最新版本是2.2.8.RELEASE,之后就没有更新了。较新版本的Spring Cloud已经不再支持spring-cloud-starter-zipkin依赖.现在使用的是spring-cloud-sleuth-zipkin依赖。

3.添加zipkin相关配置

spring:
  zipkin:
    #zipkin服务器地址
    base-url: http://120.46.40.171:9411/
    # 关闭服务发现,否则spring cloud会把zipkin的url当作服务名称
    discoveryClientEnabled: false
    sender:
      # 设置使用http的方式传输数据
      type: web
  sleuth:
    sampler:
      # 设置抽样采集率为100%,默认为0.1,10%
      probability: 1 

4.验证,启动服务,访问端口

打开zipkin的访问地址:http://localhost:9411/

4.Zipkin数据持久化

官方:https://github.com/openzipkin/zipkin

        Zipkin默认是将监控数据存储在内存中,如果Zipkin重启数据将会丢失。Zipkin支持将数据存储在:内存(默认)、Mysql、Elasticsearch、Cassandra中。 

Elasticsearch为最优选择。

通过docker方式 :

docker run -d -p 9411:9411 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.0.184:9200 openzipkin/zipkin

查看持久化情况:

已经生成了索引以及文档数据。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)模式识别——基于SVM的道路分割实验(附资源)

写在前面&#xff1a;本报告所有代码公开在附带资源中&#xff0c;无法下载代码资源的伙伴私信留下邮箱&#xff0c;小编24小时内回复 一、实验目的 1、实验目标 学习掌握SVM&#xff08;Support Vector Machine&#xff09;算法思想&#xff0c;利用MATLAB的特定工具箱和库函…

springboot房屋租赁系统-计算机毕业设计源码32524

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2开发现状 1.3论文结构与章节安排 2 房屋租赁管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 …

解决浏览器自动将http网址转https

删除浏览器自动使用https的方式 在浏览器地址栏输入&#xff1a;chrome://net-internals/#hsts PS:如果是edge浏览器可输入&#xff1a;edge://net-internals/#hsts 在Delete domain security policies搜索框下&#xff0c;输入要删除的域名,然后点击delete 解决方法&#…

[网络]TCP/IP协议 之 TCP协议的核心机制(2)

文章目录 TCP核心机制1. 确认应答2. 超时重传3. 连接管理三次握手四次挥手 4. 滑动窗口5. 流量控制6. 拥塞控制7. 延时应答8. 捎带应答9. 粘包问题10. 异常情况 TCP核心机制 1. 确认应答 (上篇) 2. 超时重传 (上篇) 3. 连接管理 建立连接的流程: 三次握手 断开连接的流程…

相亲交友程序系统开发产品分析

相亲交友系统是一种专门为单身人士设计的社交平台&#xff0c;旨在帮助他们找到合适的伴侣。这类系统通常包括了线上和线下的多种互动方式&#xff0c;能够让参与者在舒适的环境中相识、相知。编辑&#xff1a;qawsed2466。以下是相亲交友系统的一些关键特点和优势&#xff1a;…

细数H.264 H.265 H.266区别

H.264、H.265&#xff08;HEVC&#xff09;和H.266&#xff08;VVC&#xff09;是三种不同的视频编码标准&#xff0c;它们在压缩效率、图像质量、支持的分辨率以及技术特性等方面存在显著差异。以下是对这三种编码标准的详细比较&#xff1a; 概述 H.264&#xff1a;也称为AV…

基于协同过滤算法+SpringBoot+Vue+MySQL的商品推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&#xff0c;以及…

基于Python的可视化在线学习系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的可…

QT操作数据库

思维导图&#xff1a; 学习内容&#xff1a; 1. QSqlDatabase:数据库管理类 主要完成数据库的创建、数据库的打开、关闭等操作 该类中常用函数&#xff1a; 1、 QSqlDatabase addDatabase(const QString &type, const QString &connectionName QLatin1String(default…

Science Robotics 在小动物模型中实现渐进和可逆主动脉收缩的软机器人平台

前言速览&#xff1a;目前对左心室压力过载引起心脏重构过程的理解主要来源于主动脉束带的动物模型。然而&#xff0c;这些研究未能同时控制疾病的进展和逆转&#xff0c;阻碍了其临床意义。为此&#xff0c;来自哈佛大学、麻省理工学院等的研究人员介绍了一种基于植入式可扩张…

@Transactional和@Synchronized的冲突

Transactional和Synchronized的冲突 场景 方法是先进行检查&#xff0c;然后新增&#xff0c;添加了事务注解&#xff0c;为了保证检查&#xff08;要求业务上唯一&#xff09;&#xff0c;添加了Synchronized注解 想法很简单&#xff0c;事务注解保证方法原子性&#xff0c…

git一个项目关联多个远程仓库

一行代码就行&#xff1a; git remote set-url origin [想要关联的远程仓库地址]想要关联哪个就切换哪个 或者不用每次切换&#xff0c;集中管理&#xff1a; Git->Manage Remotes 点击“”&#xff0c;填入Name和想要关联的远程库地址 每次push时执行命令 git push [为…

ssrf漏洞利用+CTF实例

引发ssrf漏洞的几个函数 file_get_contents() 把整个文件读入一个字符串中&#xff0c;获取本地或者远程文件内容fsockopen() 获得套接字信息curl_exec() 执行一个curl会话&#xff0c;由curl_init()初始化一个新的会话&#xff0c;返回一个curl句柄fopen() 打开文件或者URLre…

全国历年高考真题2008-2024

目录 分享链接&#xff1a; ⬇️⬇️⬇️ 点击下载

2024网络安全学习路线,最全保姆级教程,学完直接拿捏!

关键词&#xff1a; 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 前排提示&#xff1a;文末有CSDN独家网络安全资料包&#xff01; 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有…

基于微信小程序的高校实验室管理系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的高…

QT:音视频播放器

目录 一.播放器设计 二.需要使用的控件 三.选择视频 四.播放视频 五.暂停视频 六.关闭视频 七.播放状态设置 八.切换视频(上一首) 九.切换视频(下一首) 十.设置视频滑块 十一.更新滑块显示 十二.实现效果 十三.代码设计 1.mainwindow.h 2.mainwindow.cpp 一.播放…

并行程序设计基础——并行I/O(2)

目录 一、显式偏移的并行文件读写 1、阻塞方式 1.1 MPI_FILE_READ_AT 1.2 MPI_FILE_WRITE_AT 1.3 MPI_FILE_READ_AT_ALL 1.4 MPI_FILE_WRITE_AT_ALL 2、非阻塞方式 2.1 MPI_FILE_IREAD_AT 2.2 MPI_FILE_IWRITE_AT 3、两步非阻塞组调用 3.1 MPI_FILE_READ_AT_ALL_BEG…

基于SpringBoot的医院挂号预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的医院挂号…

港科夜闻 | 叶玉如校长出席2024科技+新质生产力高峰论坛发表专题演讲,贡献国家科技强国战略...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、叶玉如校长出席“2024科技新质生产力高峰论坛”&#xff0c;做了题为“三个创新&#xff1a;培育和发展新质生产力、贡献国家科技强国战略”的主题演讲。该论坛于9月2日在香港召开。论坛围绕夯实基础科研、推动源头创新、…