码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringCloud - Sleuth分布式请求链路跟踪


    文章目录

    • 一.概述
    • 二.zipkin搭建
    • 三.Sleuth链路监控实现
      • 1. payment8001生产者修改
      • 2. Consumer80消费者修改
      • 3. 测试

    一.概述

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

    在这里插入图片描述

    spring-cloud-sleuth 是什么?

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

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

    二.zipkin搭建

    Zipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口之外,它也提供了方便的 UI 组件帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。

    SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可

    zipkin-server-2.12.9-exec.jar

    运行:

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

    在这里插入图片描述

    访问地址:http://localhost:9411/zipkin/

    术语:

    完整的调用链路

    表示一请求链路,一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来
    在这里插入图片描述
    —条链路通过Trace ld唯一标识,Span标识发起的请求信息,各span通过parent id关联起来。

    在这里插入图片描述

    在这里插入图片描述

    名词解释:

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

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

    三.Sleuth链路监控实现

    1. payment8001生产者修改

    添加依赖:

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    application.yml

    spring:
      application:
        name: cloud-payment-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          # 采样率在0 到 1 之间 1则表示全部采样
          probability: 1s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    新增controller方法:

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

    2. Consumer80消费者修改

    添加依赖:

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    application.yml

    spring:
      application:
        name: cloud-order-server
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          probability: 1 # 表示全部采样
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Controller新增方法

    // ====================> zipkin+sleuth
    @GetMapping("/consumer/payment/zipkin")
    public String paymentZipkin()
    {
        String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);
        return result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3. 测试

    • 启动注册中心7001
    • 启动生产者8001
    • 启动消费者80
    • 多访问几次 http://localhost/consumer/payment/zipkin

    查看 zipkin控制台:http://localhost:9411

    在这里插入图片描述

    查看依赖关系:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Linux:keepalived 双热备份(基础备份web)
    Linux——匿名管道
    C语言练习题-大数乘法、分解质因数
    数据可视化之设计经验分享:轻松三步教你学会制作数据可视化大屏思路
    一周时间深扒事务 总结代码演示篇 拿捏事务
    正能量早安祝福问候语,早安说说心情短语好句子
    Unity3d bounds包围盒 和collider碰撞器区别
    Python之线程Thread(一)
    python进程池和线程池
    在Vue中使用vant的方法,踩坑in .node_modulesvantesdialogDialog.js
  • 原文地址:https://blog.csdn.net/m0_66689823/article/details/128088189
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号