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;实现完善的企业仓…

XR虚拟拍摄助力短剧制作:探索未来影视新纪元

XR虚拟拍摄助力短剧制作&#xff1a;探索未来影视新纪元 在数字化浪潮的推动下&#xff0c;短剧拍摄行业正经历着一场前所未有的技术革新。其中&#xff0c;XR&#xff08;扩展现实&#xff09;虚拟拍摄技术的崛起&#xff0c;不仅为短剧制作提供了更为广阔的创作空间&#xff…

从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;并且这些请求被放置在一个队列中等待处理时&…

c# 除法运算 ;/运算符;%运算符

1.c# 除法运算 &#xff0c;且保留小数 (13*1.0f) / 6 结果 2.1666666666666665 2.C# 保留小数位数的方法 转自&#xff1a;https://www.cnblogs.com/abeam/p/8406054.html 前言 本文主要介绍 C# 中实现小数位数的保留&#xff0c;完成对小数位数四舍五入的几种方法。 1.…

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

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

2024年旅游经济与文化传播国际会议(ICTECC 2024)

2024年旅游经济与文化传播国际会议&#xff08;ICTECC 2024&#xff09; 2024 International Conference on Tourism Economy and Cultural Communication 会议简介&#xff1a; 旅游经济与文化传播之间存在密切的关系。旅游经济是以旅游活动为依托&#xff0c;通过旅游资源…

【每日力扣】 修剪二叉搜索树与复原 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和Windows类似的命令

以下是一些常用的Linux命令&#xff0c;它们类似于Windows的cmd命令&#xff1a; Windows cmd 命令 对应的 Linux 命令 dir ls cd cd copy cp del rm mkdir mkdir rmdir …

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

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

MySQL—数据库导入篇

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

java项目打包(maven+原生)

一、maven打jar包 1.1 没有第三方依赖的jar java -jar maven项目打包提示.jar中没有主清单属性 <build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifact…

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

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

学习python笔记:9,with,requests,os,set,list,enumerate,numpy.array

with语句 在Python中&#xff0c;with语句用于确保某段代码执行完毕时&#xff0c;资源&#xff08;如文件对象、网络连接等&#xff09;可以被正确地清理。这通常涉及到使用上下文管理协议&#xff0c;该协议要求一个对象实现__enter__()和__exit__()两个方法。 with语句的基…

常见视频名词及视频格式

常见视频名词 时长&#xff1a;视频时间单位&#xff0c;基本单位&#xff1a;秒&#xff0c;常见格式&#xff1a;00:00:00:00&#xff08;时&#xff1a;分&#xff1a;秒&#xff1a;帧&#xff09; 帧&#xff1a;视频的基础单位 视频也是一帧一帧组成的&#xff0c;他是…