SpringCloud Sleuth 分布式请求链路跟踪

一、前言

        接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十篇,即介绍 Sleuth 分布式请求链路跟踪。

二、概述

2.1 出现的原因

        在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。

2.2 Sleuth 是什么

        Spring Cloud Sleuth 提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了 zipkin

三、搭建链路监控

3.1 zipkin 下载和安装

        SpringCloud F 版起已不需要自己构建 Zipkin Server 了,只需调用 jar 包即可。下载地址在这,选择合适的版本,如下图:

        下载完成后,执行 java -jar zipkin-server-2.18.0-exec.jar 命令,运行 jar 包,如下图:

        输入 http://localhost:9411/zipkin/,查看管理界面,如下图:

3.2 相关术语

3.2.1 完整的调用链路

        完整的调用链路表示一请求链路,一条链路通过 Trace Id 唯一标识,Span 标识发起的请求信息,各 span 通过 parent id 关联起来。

        整个链路的依赖关系如下图:

3.2.2 名词解释

        1、Trace:类似于树结构的 Span 集合,表示一条调用链路,存在唯一标识。

        2、span:表示调用链路来源,通俗的理解 span 就是一次请求信息。

3.3 案例演示

        修改服务提供方 cloud-provider-payment8001 模块,添加 zipkin 的依赖,如下:

<!--包含了sleuth+zipkin-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

        并修改 application.yml ,添加 zipkin 的相关配置信息,如下:

        修改业务类 PaymentController,添加如下的方法:

@GetMapping("/payment/zipkin")
public String paymentZipkin()
{return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
}

         修改服务调用方 cloud-consumer-order80 模块,添加 zipkin 的依赖,如下:

<!--包含了sleuth+zipkin-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

        并修改 application.yml ,添加 zipkin 的相关配置信息,如下:

        修改业务类 OrderController,添加如下的方法:

// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);return result;
}

3.4 测试

        依次启动 cloud-eureka-server7001cloud-provider-payment8001 和 cloud-consumer-order80 模块,然后输入:http://localhost/consumer/payment/zipkin,多调用几次,如下:

        打开浏览器访问 ZipKin 的管理界面:http://localhost:9411 ,如下:

        查看依赖关系,如下:

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

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

相关文章

万界星空科技WMS仓储管理包含哪些具体内容?

wms仓库管理是通过入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能&#xff0c;综合批次管理、物料对应、库存盘点、质检管理、虚仓管理和即时库存管理等功能综合运用的管理系统&#xff0c;有效控制并跟踪仓库业务的物流和成本管理全过程&#xff0c;实现完善的企业仓…

从WAF到WAAP的研究

对于需要保护Web应用程序和API的企业来说&#xff0c;从WAF到WAAP的转变已成为一种必然趋势。采用WAAP平台可以更为全面和高效地保护Web应用程序和API的安全&#xff0c;同时避免了高昂的维护成本和攻击绕过WAF的风险。 网络安全领域的发展趋势是从WAF到WAAP的转变。WAF作为传…

如何利用IP地址分析风险和保障网络安全

随着网络攻击的不断增加和演变&#xff0c;保障网络安全已经成为了企业和组织不可忽视的重要任务。在这样的背景下&#xff0c;利用IP地址分析风险和建立IP风险画像标签成为了一种有效的手段。本文将深入探讨IP风险画像标签的作用以及如何利用它来保障网络安全。 IP风险画像查…

一键制作iOS上架App Store描述文件教程

摘要 本篇博文详细介绍了在iOS上架过程中所需的基础项目&#xff0c;包括IOS生产环境证书、APPID包名制作以及APP的描述文件。通过使用appuploader进行证书制作和上传IPA到App Store&#xff0c;能够快速掌握真机测试和上架流程。 引言 在iOS应用开发过程中&#xff0c;正确…

PHP反序列化--引用

一、引用的理解&#xff1a; 引用就是给予一个变量一个恒定的别名。 int a 10; int b &a; a 20; cout<<a<<b<<endl; 输出结果 : a20、b20 二、靶场复现&#xff1a; <?php highlight_file(__FILE__); error_reporting(0); include("flag.p…

android 顺滑滑动嵌套布局

1. 背景 最近项目中用到了上面的布局&#xff0c;于是使用了scrollviewrecycleview&#xff0c;为了自适应高度&#xff0c;重写了recycleview&#xff0c;实现了高度自适应&#xff1a; public class CustomRecyclerView extends RecyclerView {public CustomRecyclerView(Non…

【HTTP】面试题整理

HTTP&#xff1a;什么是队头阻塞以及怎么解决&#xff1f; 队头阻塞&#xff08;Head-of-Line Blocking&#xff09; 计算机网络中的一个概念&#xff0c;特别是在处理HTTP请求时。当多个HTTP请求被发送到一个服务器&#xff0c;并且这些请求被放置在一个队列中等待处理时&…

iview 不请求接口修改table本地数据 不刷新的本质问题以及最简单的解决方法

在日常的开发中&#xff0c;相信大家都遇到过这样的问题&#xff0c;通过请求接口&#xff0c;而后赋值table数据&#xff0c;页面都是正常的刷新渲染的&#xff0c;但是有时&#xff0c;不需要请求接口&#xff0c;只修改本地的固定数据的话&#xff0c;页面的table表格数据却…

【每日力扣】 修剪二叉搜索树与复原 IP 地址

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&am…

Git 仓库瘦身与 LFS 大文件存储

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久&#xff0c;追踪的文件越来越多&#xff0c;git 存储的 objects 数量会极其庞大&#xff0c;每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件&#xff0c;且 git push…

Linux系统(四)- 进程初识 | 环境变量 | 进程地址空间

~~~~ 前言冯诺依曼体系结构&#xff08;重要&#xff09;总览CPU工作方式什么是指令集&#xff1f;CPU为什么只和内存打交道&#xff08;数据交换&#xff09;&#xff1f;木桶效应&#xff1a;在数据层面的结论程序运行为什么要加载到内存&#xff1f; 进一步理解计算机体系结…

MySQL—数据库导入篇

什么是数据库&#xff1f; 数据库是干啥的&#xff1f; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。 MySQL属于哪一类数据库&#xff1f; MySQL是一种关系型数据库。所谓的关系型数据库&#xff0c;是建立在关系模型基础上的数据库&a…

Cesium:绘制一个 3DTiles 对象的外包盒顶点

作者:CSDN @ _乐多_ 本文将介绍如何使用 Cesium 引擎根据模型的中心坐标,半轴信息,绘制一个 3DTiles 对象的外包盒顶点。 外包盒是一个定向包围盒(Oriented Bounding Box),它由一个中心点(center)和一个包含半轴(halfAxes)组成。半轴由一个3x3的矩阵表示,这个矩阵…

Java安全基础 关键概念过关

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

卷积篇 | YOLOv8改进之C2f模块融合SCConv | 即插即用的空间和通道维度重构卷积

前言:Hello大家好,我是小哥谈。SCConv是一种用于减少特征冗余的卷积神经网络模块。相对于其他流行的SOTA方法,SCConv可以以更低的计算成本获得更高的准确率。它通过在空间和通道维度上进行重构,从而减少了特征图中的冗余信息。这种模块的设计可以提高卷积神经网络的性能。本…

如何正确从github上下载数据集等内容

文章目录 一、现象&#xff1a;二、解决方案 一、现象&#xff1a; 数据集点击下载没有反应&#xff0c;那需要怎么下载数据集呢&#xff1f; 二、解决方案 输入以下命名行&#xff0c;亲测有效 git clone https://github.com/mymusise/ChatGLM-Tuning.git

【ADF4351】使用FPGA进行SPI寄存器配置、使用FPGA计算各个频率的频点,ADF4351配置程序

简介 特性 输出频率范围&#xff1a;35 MHz至4,400 MHz 小数N分频频率合成器和整数N分频频率合成器 具有低相位噪声的VCO 可编程的1/2/4/8/16/32/64分频输出 典型抖动&#xff1a;0.3 ps rms EVM(典型值&#xff0c;2.1 GHz)&#xff1a; 0.4% 电源&#xff1a;3.0 V至3.6 V …

Selenium 自动化 —— 使用WebDriverManager自动下载驱动

上一篇文章 入门和 Hello World 实例 中&#xff0c;我们提供了一个最简单的 Selenium 上手的例子。 但是某一天&#xff0c;突然发现相同的代码居然运行报错了。这是怎么回事呢&#xff1f; 日志排查 日志中其实提示的很明显了&#xff1a;Chrome浏览器和Chrome WebDriver的…

adobe animate 时间轴找不到编辑多个帧按钮

如题&#xff0c;找了半天&#xff0c;在时间轴上找不到编辑多个帧按钮,导致无法批量处理帧 然后搜索发现原来是有些版本被隐藏了&#xff0c;需要再设置一下 勾选上就好了

day0 3r文档docker部署

3R编码 | 3R教室 - 最好的数字游民学习与交流俱乐部! (3rcd.com) window安装wsl下载不下来&#xff0c;正好有个服务器&#xff0c;就用linux吧密钥长度不匹配&#xff0c;设置一下长度即可 文档启动不成功&#xff0c;单独下载了下nginx&#xff0c;docker pull nginx:latest …