SpringCloud Sleuth分布式请求链路跟踪

举报
别团等shy哥发育 发表于 2023/01/09 18:35:31 2023/01/09
【摘要】 @[toc](SpringCloud Sleuth分布式请求链路跟踪)源码仓库地址:gitee仓库地址 1、Spring Cloud Sleuth概述 1.1 为什么会出现这个技术?  在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最...

@[toc](SpringCloud Sleuth分布式请求链路跟踪)

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

1、Spring Cloud Sleuth概述

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

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

image-20220412153409108

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

image-20220412153505664

1.2 什么是Spring Cloud Sleuth?

image-20220412153626436

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

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

1.3 zipkin是什么?

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

68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f7765622d73637265656e73686f742e706e67

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

68747470733a2f2f7a69706b696e2e696f2f7075626c69632f696d672f646570656e64656e63792d67726170682e706e67

2、搭建链路监控步骤

2.1 zipkin

2.1.1 下载jar包

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

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

  下载完成之后运行Jar

java -jar zipkin-server-2.23.16-exec.jar

image-20220412154426305

2.1.2 访问控制台

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

image-20220412154545473

2.1.3 关键术语

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

image-20220412154723889

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

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

image-20220412154741821

image-20220412154746678

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

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

2.2 服务提供者配置

  在cloud-provider-payment8001模块中,

  引入依赖:

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

image-20220412154909950

  yml中配置:

image-20220412155050133

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

image-20220412155126357

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

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

  pom.xml中引入相关依赖

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

image-20220412155233032

  application.yml

image-20220412155309349

  业务类添加一条测试方法

//  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

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

2.4 测试

  依次启动eureka7001/8001/80

image-20220412155630008

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

image-20220412160148339

  查看某一条调用链路

image-20220412160216308

  查看依赖关系:

image-20220412160246894

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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