SpringCloud实战---第十九篇:分布式请求链路跟踪Sleuth

举报
老司机张师傅 发表于 2022/07/26 23:26:01 2022/07/26
【摘要】 系列文章目录SpringCloud快速入门到精通各组件原理专栏传送门@TOC 一、SpringCloudSleuth链路监控是什么在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。官网:https://github.com/...

系列文章目录

SpringCloud快速入门到精通各组件原理
专栏传送门


@TOC


一、SpringCloudSleuth链路监控是什么

  • 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
  • 官网:https://github.com/spring-cloud/spring-cloud-sleuth
  • Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案。
  • 在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
  • 简单来说,Sleuth就是链路调用监控工具,通过zipkin可以实现图形化的调用链路监测。

二、安装zipkin

  • SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可。
  • 下载地址(自己下载最新的即可):https://repo1.maven.org/maven2/io/zipkin/zipkin-server/
  • zipkin-server-2.12.9-exec.jar
  • 运行jar: java -jar zipkin-server-2.12.9-exec.jar
    在这里插入图片描述
    访问可视化界面
http://127.0.0.1:9411/zipkin/

在这里插入图片描述

三、先构建好基础工程(一篇一篇看过来的不用重新构建)

构建基础父工程:构建基础父工程
Rest风格微服务:Rest风格微服务
传统分布式方法:传统分布式方法
改造工程,抽取公共模块:改造工程,抽取公共模块
使用Eureka:使用Eureka
Eureka集群: Eureka集群

想偷懒的请下载;gitee上我上传的代码:

https://gitee.com/xiaoZ1712/cloud2021

基础工程构建完成的目录结构:
在这里插入图片描述
启动所有模块,访问

localhost:7001

显示如下,代表基础工程没问题
在这里插入图片描述

话不多说,立马开干

四、微服务整合Sleuth

我们先改造服务提供方,添加调用链路的监控

改造服务提供方

1. 给8001工程添加sleuth依赖

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

在这里插入图片描述

2. 给8001添加yml配置

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

在这里插入图片描述

3. 给8001添加一个测试接口

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

在这里插入图片描述

改造服务调用方

1. 给80工程添加sleuth依赖

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

在这里插入图片描述

2. 给80添加yml配置

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

在这里插入图片描述

3. 给80添加调用8001测试接口的接口

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

在这里插入图片描述

五、启动测试

依次启动7001、8001、80工程,测试80调用几次8001的接口

http://127.0.0.1/consumer/payment/zipkin

在这里插入图片描述
多刷新几次
访问zipkin

http://127.0.0.1:9411/zipkin/

按照以下步骤查看服务链路调用

  1. 添加链路查找条件
    在这里插入图片描述
    在这里插入图片描述
  2. 选择查找80order工程服务监控
    在这里插入图片描述
  3. 点击查找
    在这里插入图片描述
    在这里插入图片描述
  4. 点击SHOW
    在这里插入图片描述
    在这里插入图片描述
  5. 查看依赖
    在这里插入图片描述
    在这里插入图片描述
    查看图形化调用链路,点击小圆点可以查看详细信息
    在这里插入图片描述

O(∩_∩)O哈哈~

我们的微服务可以被看到是否健康啦!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。