当前位置: 首页 > news >正文

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录

  • Spring Cloud Sleuth概述
    • 概述
    • 主要功能:
    • Sleuth中的术语和相关概念
    • 官网
  • zipkin配置
    • 下载运行zipkin
      • 下载zipkin
      • 运行
  • demo配置
    • 服务提供者 lf-user
      • pom.xml
      • application.yml
      • UserController
    • 服务调用者 lf-auth
      • pom.xml
      • application.yml
      • AuthController
  • 测试

Spring Cloud Sleuth概述

概述

Spring Cloud Sleuth 是一个分布式跟踪系统,用于在微服务架构中追踪请求的流程和跨服务调用的链路。它是 Spring Cloud 生态系统的一部分,用于帮助开发人员监测和诊断分布式应用程序的性能和问题。

主要功能:

分布式追踪:Spring Cloud Sleuth 为每个请求生成唯一的跟踪标识符,并记录每个请求的起始时间和结束时间,以及请求经过的各个服务的信息。这样,开发人员可以查看整个请求的链路,了解请求从一个微服务到另一个微服务的传递情况。

链路追踪:Spring Cloud Sleuth 将跟踪信息关联到请求的链路中,使开发人员能够跟踪请求在不同服务之间的传递,并识别可能的性能问题或故障。

集成支持:Spring Cloud Sleuth与其他微服务框架和工具(如Spring Cloud、Zipkin、Jaeger等)集成良好,可以轻松地将其与这些工具一起使用,以实现更全面的分布式追踪和性能监控。

日志输出:Spring Cloud Sleuth还可以将跟踪信息输出到日志中,以便开发人员查看请求的跟踪信息和性能数据。

Sleuth中的术语和相关概念

Trace(跟踪):Trace 是一组跨越多个服务的相关请求和操作的集合。它代表了一个完整的请求链路,从一个服务到另一个服务的传递过程。
Span(跨度):Span 是 Trace 中的一个小的时间片段,表示在一个服务内的单个操作。每个Span都有一个唯一标识符,描述了操作的名称、开始时间和持续时间等信息。
Trace ID(跟踪标识符):Trace ID 是用于标识整个 Trace 的唯一标识符。它被分配给 Trace 中的所有 Span,用于将它们关联在一起,以形成完整的链路。
Span ID(跨度标识符):Span ID 是用于标识单个 Span 的唯一标识符。它用于将不同服务中的操作关联起来,以构建跟踪链路。
Parent Span ID(父 Span 标识符):Parent Span ID 用于指示一个 Span 的父 Span。这样可以建立 Span 之间的层次关系。
Annotation(注解):Annotation 是用于描述 Span 的重要事件的标签。它们可以包括事件的名称、时间戳和其他相关信息,用于更详细地描述 Span。
Sampler(采样器):采样器是决定是否记录 Trace 的策略。它可以根据一定的规则确定是否对请求进行跟踪,以减少跟踪数据的产生量。
Baggage(行李):Baggage 是一种在 Span 之间传递上下文信息的方式。它可以用于传递一些自定义的信息,以便在不同服务中使用。
Tracer(跟踪器):Tracer 是 Spring Cloud Sleuth 中的核心组件,用于创建和管理 Trace 和 Span。通过 Tracer,您可以开始、结束和注释 Span。
Exporter(导出器):Exporter 是用于将跟踪数据导出到外部存储或分析工具的组件。它可以将跟踪数据发送到诸如Zipkin、Jaeger等分布式追踪系统。

官网

https://github.com/spring-cloud/spring-cloud-sleuth

zipkin配置

下载运行zipkin

下载zipkin

zipkin-server-2.12.9-exec.jar

运行

java -jar zipkin-server-2.12.9-exec.jar

在这里插入图片描述

访问http://localhost:9411/zipkin/
在这里插入图片描述

demo配置

服务提供者 lf-user

pom.xml

增加:

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

application.yml

增加到spring层级下:

zipkin:base-url: http://localhost:9411
sleuth:sampler:#采样率值介于 0 到 1 之间,1 则表示全部采集probability: 1

UserController

@GetMapping("/zipkin")
public String paymentZipkin() {return "hi ,i'am authzipkin server fall back";
}

服务调用者 lf-auth

pom.xml

增加:

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

application.yml

增加到spring层级下:

zipkin:base-url: http://localhost:9411
sleuth:sampler:#采样率值介于 0 到 1 之间,1 则表示全部采集probability: 1

AuthController

增加:

@GetMapping("/consumer/auth/zipkin")
public String paymentZipkin() {String result = restTemplate.getForObject(USER_URL + "/user/zipkin/", String.class);return result;
}

测试

  • 依次启动:
    cloud-eureka-server7001
    lf-user
    lf-auth

  • 访问几次http://localhost:9002/auth/consumer/auth/zipkin在这里插入图片描述

  • 打开浏览器访问:http://localhost:9411
    在这里插入图片描述

  • 查看依赖关系
    在这里插入图片描述

相关文章:

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录 Spring Cloud Sleuth概述概述主要功能&#xff1a;Sleuth中的术语和相关概念官网 zipkin配置下载运行zipkin下载zipkin运行 demo配置服务提供者 lf-userpom.xmlapplication.ymlUserController 服务调用者 lf-authpom.xmlapplication.ymlAuthController 测试 Spring Cl…...

Java开发中的操作日志详解(InsCode AI 创作助手)

Java开发中的操作日志详解 一、操作日志的作用 故障排除和调试&#xff1a; 操作日志可以记录应用程序的各种活动&#xff0c;包括错误、异常、警告和信息性消息。这有助于开发人员快速定位和解决问题。性能分析&#xff1a; 通过记录关键操作和性能指标&#xff0c;操作日志…...

FutureTask和CompletableFuture的模拟使用

模拟了查询耗时操作&#xff0c;并使用FutureTask和CompletableFuture分别获取计算结果&#xff0c;统计执行时长 package org.alllearn.futurtask;import com.google.common.base.Stopwatch; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; imp…...

Redis作为缓存,mysql的数据如何与redis进行同步?

Redis作为缓存&#xff0c;mysql的数据如何与redis进行同步&#xff1f; 一定要设置前提&#xff0c;先介绍业务背景 延时双删 双写一致性:当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致 读操作:缓存命中&#xff0c;直接返回;缓存未…...

申请免费 SSL 证书为您的小程序加密通信

在今天的网络环境中&#xff0c;数据安全和隐私保护变得尤为重要。无论是网站还是应用程序&#xff0c;为其提供安全的通信渠道都是至关重要的。对于小程序开发者来说&#xff0c;使用 SSL&#xff08;Secure Sockets Layer&#xff09;证书可以有效地保障用户数据的安全&#…...

Go 并发编程

并发编程 1.1 并发与并⾏ 并⾏与并发是两个不同的概念&#xff0c;普通解释&#xff1a; 并发&#xff1a;交替做不同事情的能⼒并⾏&#xff1a;同时做不同事情的能⼒ 如果站在程序员的⻆度去解释是这样的&#xff1a; 并发&#xff1a;不同的代码块交替执⾏并⾏&#xf…...

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

本文介绍两种方法 1、经纬度矫正法 2、棋盘格矫正法 一、经纬度矫正法 1、算法说明 经纬度矫正法&#xff0c; 可以把鱼眼图想象成半个地球&#xff0c; 然后将地球展开成地图&#xff0c;经纬度矫正法主要是利用几何原理&#xff0c; 对图像进行展开矫正。 经过P点的入射光线…...

es6 数据类型

​ es6 数据类型 map 数据类型 >Map 对象保存键值对。 用途 &#xff1a; Object的key无法支持该数据时需要了解对象大小时 map 数据类型任何值(对象或者原始值) 都可以作为一个键。 Object 的键只能是字符串 let myMap new Map(); let myMap1 new Map(); var keyStrin…...

【postgresql】

看到group by 1&#xff0c;2 和 order by 1&#xff0c; 2。看不懂&#xff0c;google&#xff0c;搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” mean? 大概意思就是&#xff0c;group by&#xff0c; order by 后面跟数字&#xff0c;指的是 selec…...

【C++】空间配置器 allocator:原理及底层解析

文章目录 空间配置器一级空间配置器二级空间配置器1. 内存池2. SGI-STL中二级空间配置器设计 - - 哈希桶3. 二级空间配置器的空间申请 空间配置器的默认选择空间配置器的在封装&#xff1a;添加了数据类型大小空间配置器对象的构造与析构 容器中的 allocator 空间配置器 提到空…...

微信小程序 movable-area 区域拖动动态组件演示

movable-area 组件在小程序中的作用是用于创建一个可移动的区域&#xff0c;可以在该区域内拖动视图或内容。这个组件常用于实现可拖动的容器或可滑动的列表等交互效果。 使用 movable-area 组件可以对其内部的 movable-view 组件进行拖动操作&#xff0c;可以通过设置不同的属…...

隔离上网,安全上网

SDC沙盒数据防泄密系统&#xff08;安全上网&#xff0c;隔离上网&#xff09; •深信达SDC沙盒数据防泄密系统&#xff0c;是专门针对敏感数据进行防泄密保护的系统&#xff0c;根据隔离上网和安全上网的原则实现数据的代码级保护&#xff0c;不会影响工作效率&#xff0c;不…...

NOSQL Redis 数据持久化 RDB、AOF(二) 恢复

redis 执行flushall 或 flushdb 也会产生dump.rdb文件&#xff0c;但里面是空的。 注意&#xff1a;千万执行&#xff0c;不然rdb文件会被覆盖的。 dump.rdb 文件如何恢复数据 讲备份文件 dump.rdb 移动到redis安装目录并启动服务即可。 dump.rdb 自动触发 和手动触发 自…...

UDP通信

UDP通信 #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen); - 参数&#xff1a;- sockfd : 通信的fd- buf : 要发送的数据- len : 发送…...

Bootstrap对溢出内容的两种处理:滚动条和隐藏两种方式

Bootstrap中定义了以下两个类来处理内容溢出的情况&#xff1a; 类overflow-auto&#xff1a;在固定宽度和高度的元素上&#xff0c;如果内容溢出了元素&#xff0c;将生成一个垂直滚动条&#xff0c;通过滚动条可以查看溢出的内容。 类overflow-hidden:在固定宽度和高度的元素…...

elasticsearch基本语法

这里写自定义目录标题 elasticsearch简介基本语法索引创建索引修改索引删除索引 查询简单查询精确查询条件查询范围查询&#xff1a;聚合查询&#xff1a;排序和分页&#xff1a; 参考文献&#xff1a; elasticsearch简介 Elasticsearch 是一个开源的分布式搜索和分析引擎&…...

Maven Spring jar包启动报错 排查

Maven Spring jar包启动报错排查 背景 maven 编译jar包&#xff0c;放在linux服务器启动不起来&#xff0c;提示&#xff1a;xxxx-0.0.1-SNAPSHOT.jar中没有主清单属性 原因 pom 配置文件&#xff0c;多了 <skip>true</skip> <build><plugins>&l…...

LeetCode-2485-找出中枢整数

题目描述&#xff1a; 给你一个正整数 n &#xff0c;找出满足下述条件的 中枢整数 x &#xff1a; 1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。 返回中枢整数 x 。如果不存在中枢整数&#xff0c;则返回 -1 。题目保证对于给定的输入&#xff0c;至多存在一个中…...

nano pi m1配置脚本(全志H3)

为nanopi m1写一个自动配置脚本&#xff0c;简化自己的操作 配置&#xff1a;H3芯片&#xff0c;1G内存&#xff0c;64G卡 系统&#xff1a;friendlycore focal 4.14版本 一、系统安装 烧录系统后&#xff0c;插入机器&#xff0c;但是使用df -ih发现只有900K的nodes&#xff…...

linux--gdb的使用

1&#xff0c;Makefile默认release版本&#xff0c;要想进入debug版本需添加-g后缀 2&#xff0c;进入调试界面&#xff1a;gdb 可执行程序 3&#xff0c;显示代码&#xff1a;l&#xff08;list&#xff09; 数字&#xff08;1/0&#xff09; 不停回车可一直显示到结束并显…...

ncmdump终极解密指南:如何快速解锁网易云音乐NCM加密文件

ncmdump终极解密指南&#xff1a;如何快速解锁网易云音乐NCM加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否遇到过这样的困扰&#xff1f;在网易云音乐下载的歌曲只能在特定播放器中使用&#xff0c;换到其他设备或播…...

DNS 泄露是什么?为什么网络环境检测时要看 DNS

很多人在检查网络环境时&#xff0c;第一反应通常是看 IP。比如 IP 显示在哪个地区、运营商是谁、是不是数据中心网络。 但实际上&#xff0c;除了 IP 之外&#xff0c;DNS 也是一个很容易被忽略的关键指标。如果 DNS 查询结果和当前网络出口不一致&#xff0c;就可能出现所谓的…...

AI 挖洞新思路、深度解析两大间接提示词注入漏洞攻防思路,注入也能获得上万美金

​ 0x01 简介 在移动 AI 领域&#xff0c;我已经很久没有关注过提示词注入漏洞了&#xff0c;在前两天关注到 Gemini 的漏洞之前&#xff0c;我对提示词注入的印象还停留在两年前&#xff0c;当时搞搞越狱&#xff0c;觉得这东西是纯内容安全&#xff0c;也只能等未来对能够进…...

遗传算法调参避坑指南:交叉率、变异率怎么设?种群大小多少合适?

遗传算法参数调优实战手册&#xff1a;从理论到工程落地的关键策略 当你在深夜盯着屏幕上迟迟不收敛的遗传算法结果时&#xff0c;是否曾怀疑过那些默认参数值是否真的适合你的问题&#xff1f;遗传算法作为经典的优化工具&#xff0c;其参数设置往往决定了算法是高效找到全局最…...

NotebookLM引用格式生成失效真相:Google官方未公开的citation token截断限制(含绕过验证方案)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM引用格式生成失效真相&#xff1a;Google官方未公开的citation token截断限制&#xff08;含绕过验证方案&#xff09; NotebookLM 在处理长篇 PDF 或网页源时&#xff0c;常出现引用标记&am…...

【免费下载】 车牌识别字符库

车牌识别字符库 【下载地址】车牌识别字符库 本仓库提供了一个车牌识别字符库&#xff0c;该字符库已经过预处理&#xff0c;将车牌上的字符进行了切割和分割&#xff0c;每个字符均为单独的图像文件。字符图像的大小统一为20x20像素&#xff0c;涵盖了车牌上常见的省份简写、数…...

[具身智能-791]:NAV2 全局规划层 A*算法的本质是距离最短,而不是时间最短算法

核心定论A 算法本质&#xff1a;优先求解几何物理距离最短路径&#xff0c;天生不是「通行耗时最短」算法*一、直白区分A 追求目标*以栅格空间长度为核心权重&#xff0c;算出纯路程最短的路线&#xff0c;只看走了多少米&#xff0c;不看好不好走、堵不堵、快慢如何。时间最短…...

SFT与RL:AI训练的黄金搭档,何时介入才能事半功倍?

本文探讨了SFT&#xff08;监督微调&#xff09;和RL&#xff08;强化学习&#xff09;在AI训练中的协同作用。SFT负责建立模型的基础能力&#xff0c;确保其遵循格式和指令&#xff1b;RL在此基础上优化输出质量&#xff0c;使其更符合人类使用习惯。文章详细分析了何时进行RL…...

实测对比:百度OCR车牌识别在夜间、侧拍、模糊场景下的效果到底怎么样?

百度OCR车牌识别实战评测&#xff1a;夜间、侧拍与模糊场景下的真实表现 当停车场道闸自动抬起&#xff0c;交通卡口违章记录自动生成&#xff0c;这些看似简单的场景背后都依赖一项关键技术——车牌识别。作为计算机视觉领域的经典应用&#xff0c;车牌识别技术已经从实验室走…...

终极GBFR Logs指南:掌握碧蓝幻想Relink伤害分析的完整教程

终极GBFR Logs指南&#xff1a;掌握碧蓝幻想Relink伤害分析的完整教程 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr-logs …...