前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud Sleuth分布式请求链路跟踪

SpringCloud Sleuth分布式请求链路跟踪

作者头像
别团等shy哥发育
发布2023-02-25 11:43:38
3940
发布2023-02-25 11:43:38
举报
文章被收录于专栏:全栈开发那些事

SpringCloud Sleuth分布式请求链路跟踪

源码仓库地址:gitee仓库地址

1、Spring Cloud Sleuth概述

1.1 为什么会出现这个技术?

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

image-20220412153409108
image-20220412153409108

  上面这个调用链路还能看懂,那下面这个呢?

image-20220412153505664
image-20220412153505664

1.2 什么是Spring Cloud Sleuth?

image-20220412153626436
image-20220412153626436

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

  在分布式系统中提供追踪解决方案并且兼容支持了zipkin。

1.3 zipkin是什么?

  Zipkin是一个开源的分布式追踪系统,用于对微服务间的调用链路及逆行监控跟踪。再微服务建构下,用户的一个请求可能涉及多个后台服务间的调用。Zipkin可以追踪(trace)调用链路、收集再各个微服务上所花的时间等信息,并上报到Zipkin服务器。

68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f7765622d73637265656e73686f742e706e67
68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f7765622d73637265656e73686f742e706e67

  Zipkin UI 还提供了一个依赖关系图,显示有多少跟踪请求通过了每个应用程序。这有助于识别聚合行为,包括错误路径或对已弃用服务的调用。

68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f646570656e64656e63792d67726170682e706e67
68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f646570656e64656e63792d67726170682e706e67

2、搭建链路监控步骤

2.1 zipkin

2.1.1 下载jar包

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

  zipkin官网地址:https://zipkin.io/pages/quickstart.html

  下载完成之后运行Jar

代码语言:javascript
复制
java -jar zipkin-server-2.23.16-exec.jar
image-20220412154426305
image-20220412154426305

2.1.2 访问控制台

  访问控制台:http://localhost:9411/zipkin/

image-20220412154545473
image-20220412154545473

2.1.3 关键术语

  下图所示为一条完整的调用链路,一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来

image-20220412154723889
image-20220412154723889

上图看起来复杂,简单解释如下:

  一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来

image-20220412154741821
image-20220412154741821
image-20220412154746678
image-20220412154746678

  Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识。   span:表示调用链路来源,通俗的理解span就是一次请求信息

2.2 服务提供者配置

  在cloud-provider-payment8001模块中,

  引入依赖:

代码语言:javascript
复制
		<!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
image-20220412154909950
image-20220412154909950

  yml中配置:

image-20220412155050133
image-20220412155050133

  业务类中添加一条测试方法

image-20220412155126357
image-20220412155126357

2.3 服务消费者配置(调用方)

  cloud-consumer-order80模块做如下修改:

  pom.xml中引入相关依赖

代码语言:javascript
复制
<!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
image-20220412155233032
image-20220412155233032

  application.yml

image-20220412155309349
image-20220412155309349

  业务类添加一条测试方法

代码语言:javascript
复制
//  public static final String PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";
// ====================> zipkin+sleuth
    @GetMapping("/consumer/payment/zipkin")
    public String paymentZipkin()
    {
        String result = restTemplate.getForObject(PAYMENT_URL+"/payment/zipkin/", String.class);
        return result;
    }
image-20220412155411619
image-20220412155411619

  这里的意思是在cloud-consumer-order80消费者模块中调用cloud-provider-payment8001服务提供者模块中的方法,发生服务调用,我们就可以去zpkin控制台中查看链路调用。

2.4 测试

  依次启动eureka7001/8001/80

image-20220412155630008
image-20220412155630008

  访问http://localhost/consumer/payment/zipkin,产生服务调用,多访问几次。

image-20220412160148339
image-20220412160148339

  查看某一条调用链路

image-20220412160216308
image-20220412160216308

  查看依赖关系:

image-20220412160246894
image-20220412160246894

  到此,服务链路追踪测试就介绍完了,这里只介绍个大概的用法,高级用法碰到再说。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloud Sleuth分布式请求链路跟踪
  • 1、Spring Cloud Sleuth概述
    • 1.1 为什么会出现这个技术?
      • 1.2 什么是Spring Cloud Sleuth?
        • 1.3 zipkin是什么?
        • 2、搭建链路监控步骤
          • 2.1 zipkin
            • 2.1.1 下载jar包
            • 2.1.2 访问控制台
            • 2.1.3 关键术语
          • 2.2 服务提供者配置
            • 2.3 服务消费者配置(调用方)
              • 2.4 测试
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档