七、Sleuth分布式链路请求跟踪

news2024/11/27 17:58:29

SpringCloud Sleuth分布式链路请求跟踪

概述

为什么会出现这个技术?需要解决哪些问题?

问题

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

是什么

Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案

在分布式系统中提供追踪解决方案并且兼容支持了zipkin(负责展现)

https://docs.spring.io/spring-cloud-sleuth/docs/2.2.6.RELEASE/reference/html/

https://zipkin.io/

Dependency graph screenshot

搭建链路监控步骤

Spring Cloud Sleuth和OpenZipkin(也称为Zipkin)集成。Zipkin是一个分布式跟踪平台,可用于跟踪跨多个服务调用的事务。Zipkin允许开发人员以图形方式查看事务占用的时间量,并分解在调用中涉及的每个微服务所用的时间。在微服务架构中,Zipkin是识别性能问题的宝贵工具。

建立Spring Cloud Sleuth和Zipkin涉及4项操作:

  • 将Spring Cloud Sleuth和Zipkin JAR文件添加到捕获跟踪数据的服务中;
    • 在每个服务中配置Spring属性以指向收集跟踪数据的Zipkin服务器;
    • 安装和配置Zipkin服务器以收集数据;
    • 定义每个客户端所使用的采样策略,便于向Zipkin发送跟踪信息。

zipkin

下载:https://github.com/openzipkin/zipkin

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

运行控制台 http://localhost:9411/zipkin/

服务提供者

修改:cloud-provider-payment8001

POM

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

YML

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      #采样率值介于0~1之间,1表示全部采样
      probability: 1
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/cloud2021?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

mybatis:
  mapperLocations: classpath:/mapper/*.xml
  type-aliases-package: com.aqrlmy.springcloud.entities

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

业务类PaymentController

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

服务消费者(调用方)

修改:cloud-consumer-order80

POM

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

YML

server:
  port: 80

spring:
    application:
        name: cloud-order-service
    zipkin:
      base-url: http://localhost:9411
    sleuth:
      sampler:
        probability: 1

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

业务类OrderController

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

依次启动eureka7001/8001/80

80调用8001几次测试下

打开浏览器访问: http://localhost:9411

会出现以下界面

查看

点击【SHOW】按钮,查看依赖关系。

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

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

相关文章

[附源码]计算机毕业设计springboot面向高校活动聚App

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

半正定Toeplitz矩阵的范德蒙德分解

半正定Toeplitz矩阵的范德蒙德分解 Toeplitz矩阵的定义&#xff1a;Matrices whose entries are constant along each diagonal are called Toeplitz matrices. 形如 T[r0r1r2r3r−1r0r1r2r−2r−1r0r1r−3r−2r−1r0](1)\boldsymbol{T}\left[ \begin{matrix} r_0& r_1&…

前端开发调试技巧

1、alert弹框调试 正对js代码的调试&#xff0c;我们往往需要获取某些变量的值&#xff0c;于是在早期我们往往通过alert方法将变量的值通过弹窗的形式进行打印。 <script>alert(测试弹框) </script>2、console控制台打印 alert方法对于我们来说或许仍然比较繁琐…

专题·AC自动机

初见安——&#xff01;&#xff01;这里是咕咕咕好久好久的樱狸QvQ 考完初赛了 有一点点的空闲时间 来整理一下博客【因为发现忘性很大……超过一个月没用的东西就记不住了QAQ 前置知识&#xff1a;KMP&#xff0c;tire树。 一、AC自动机 其实AC自动机就是在tire树上KMP。 …

点击化学PEG试剂DBCO-PEG4-NHS,1427004-19-0知识特点总结

一、描述&#xff1a; DBCO-PEG4-NHS酯是一种含有NHS酯的点击化学PEG试剂&#xff0c;能够在中性或稍碱性条件下与伯胺&#xff08;例如赖氨酸残基的侧链或氨基硅烷涂层表面&#xff09;特异有效地反应&#xff0c;形成共价键。亲水性PEG间隔臂提高了水溶性&#xff0c;并提供了…

ConcurrentHashMap

我们说ConcurrentHashMap是用在多并发环境下的HashMap JDK1.7 segment数组HashEntry数组链表&#xff08;即两个数组挂一个链表&#xff09; 上锁的时候锁的是segment数组&#xff0c;采用分段锁&#xff0c;每一把锁只锁一个Segment&#xff0c;默认是这个数组大小为16&…

【D3.js】1.13-动态设置每个 Bar 的坐标

title: 【D3.js】1.13-动态设置每个 Bar 的坐标 date: 2022-12-01 16:33 tags: [JavaScript,CSS,HTML,D3.js,SVG] 虽然创建了多个rect&#xff0c;但是都重叠在一起&#xff0c;如何将他们分列开来呢&#xff1f; 一、学习目标 使用回调函数动态设置坐标 .attr(“x”,(d,i)>…

laravel vue tailwind

下载laravel最新7.x composer create-project --prefer-dist laravel/laravle blog 7.x-dev cd blog valet link blog valet links blog.test 测试通过后&#xff0c;开始安装tailwind npm i npm i tailwindcss autoprefixer postcss7 都是最新版应该也没有什么问题 在根目录下…

UE的Blend Profile

参考&#xff1a;Animation Blend Profile in Unity 参考&#xff1a;Unreal Engine - How to make a Blend Profile 参考&#xff1a;blend-masks-and-blend-profiles-in-unreal-engine 什么是Blend Profile Animation Blend Profile is a UE4 animation system feature that …

aws eks 使用keycloak集成eks oidc访问apiserver

资料 OpenID Connect Tokens Kubernetes 与 OpenID 集成 SSO 登录测试 Introducing OIDC identity provider authentication for Amazon EKS Understanding Amazon Cognito user pool OAuth 2.0 grants 在 Kubernetes 中使用 Keycloak OIDC Provider 对用户进行身份验证 深…

Koa2基础笔记

目录 一、快速入门 二、中间件 链式调用 洋葱圈模型 异步处理 三、路由 koa-router 四、请求参数解析 处理URL参数 处理body参数 五、错误处理 原生的错误处理 使用中间件 一、快速入门 新建文件夹使用VSCode打开&#xff0c;终端运行npm init -y生成package.json…

[附源码]计算机毕业设计springboot水果管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

冬季寒冷,普通空调如何做到智能控制,增温又降耗的?

寒冷的冬日总少不得取暖的工具&#xff0c;空调成为人们的优先选择。但是&#xff0c;在办公大楼、商场等需要长时间空调供暖&#xff0c;空调又多的地方&#xff0c;空调控制让不少人感觉到了困扰。上下班时间空调多&#xff0c;检查慢&#xff0c;如果漏掉其中一个&#xff0…

C++——类和对象讲解

C——类和对象讲解总览 本篇文章的讲解将按照上述的方式&#xff0c;逐层递进&#xff0c;进一步帮你拿捏C类和对象这部分。 类和对象上&#xff08;基础篇&#xff09; 1、初识面向对象编程&#xff1a; 初步了解面向过程和面向对象的区别 举个比较感人的例子用来帮助铁子…

Qt视频监控系统一个诡异问题的解决思路(做梦都想不到)

一、前言 由于Qt版本众多&#xff0c;几百个版本之间存在不兼容的情况&#xff0c;为此如果要兼容很多版本&#xff0c;没有取巧的办法和特殊的捷径&#xff0c;必须自己亲自安装各个版本编译运行并测试&#xff0c;大问题一般不会有&#xff0c;除非缺少模块&#xff0c;小问…

健壮性测试是什么?

当大多数人开车时&#xff0c;他们不会担心刹车失灵。当他们的孩子得到一个新玩具时&#xff0c;他们也不担心因故障受伤。事实上&#xff0c;大多数人在日常生活中根本不担心系统故障。 这是因为软件开发人员或质量控制工程师已经解决了质量问题。如果目标是交付高质量、可靠…

基础:html5、html、htm、xhtml、dhtml、shtml、shtm、xml、xsl、xslt

一、理解 1.1、HTML5&#xff08; HyperText Markup Language 5 &#xff09; HTML5_百度百科 HTML5 技术结合了 HTML4.01 的相关标准并革新&#xff0c;符合现代网络发展要求&#xff0c;在 2008 年正式发布。HTML5 由不同的技术构成&#xff0c;其在互联网中得到了非常广泛…

TCP/IP五层协议栈(2)

1.传输层协议(TCP传输的机制补充) 1.1.滑动窗口 滑动窗口存在的意义就是在保证可靠性的前提下,尽量提高传输效率. 由于TCP是得保证可靠传输的,所以每一次数据发送时都需要等待对方的ACK.大部分时间都用在等ACK上,而确认应答是可靠传输的主要机制又不能不等.所以有了新的机制…

JavaScript -- 多种类型转换方法总结

文章目录类型转换1 转换为字符串2 转换为数值3 转换为布尔值4 总结类型转换 类型转换指将一种数据类型转换为其他类型 类型转换是根据当前值去创建另一个值&#xff0c;而不是将当前值直接进行转换 这里说到的转换都是显示类型转换&#xff0c;除此之外还有隐式类型转换 1 转…

MnTTS: 开源蒙古语语音合成数据集及其基线模型

本次分享内蒙古大学蒙古文信息处理重点实验室、蒙古文智能信息处理技术国家地方联合工程研究中心及语音理解与生成实验室 (S2LAB) &#xff08;https://ttslr.github.io/index_S2Group.html&#xff09;共同发布的开源蒙古语语音合成数据集及其基线模型。相关论文《MnTTS: An O…