SpringCloud Sleuth分布式链路跟踪

2022年11月23日12:26:31

目录

1、概述

1.1、现有问题

1.1.1、微服务框架中请求处理过程

1.1.2、造成问题

1.2、解决方法

2、实例

2.1、zipkin

2.1.1、下载

2.1.2、运行

2.1.3、运行控制台

2.2、服务提供者

2.2.1、POM文件

2.2.2、yaml配置文件

2.2.3、Controller

2.3、 服务消费者

2.3.1、POM和yaml文件同服务提供者

2.3.2、Controller

2.4、测试


1、概述

1.1、现有问题

1.1.1、微服务框架中请求处理过程

  1. 客户端发起请求
  2. 后端系统中,经过多个不同的服务节点调用
  3. 产生结果

1.1.2、造成问题

每一个前端请求,会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败

1.2、解决方法

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

2、实例

2.1、zipkin

2.1.1、下载

2.1.2、运行

在命令行终端中输入:java -jar zipkin-server-2.12.9-exec.jar

2.1.3、运行控制台

        http://localhost:9411/zipkin

2.2、服务提供者

2.2.1、POM文件

        引入 spring-cloud-starter-zipkin 依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

2.2.2、yaml配置文件

         添加zipkinsleuth属性

spring:
 application:
  name: cloud-payment-service #微服务名称

 zipkin:
   base-url: http://localhost:9411

 sleuth:
   sampler:
    # 采样率介于0到1之间,1表示全部采样
    probability: 1

2.2.3、Controller

        对外提供的服务项

@GetMapping("/payment/zipkin")
public String paymentZipkin() {
    return "hi, i am Zipkin";
}

2.3、 服务消费者

2.3.1、POM和yaml文件同服务提供者

2.3.2、Controller

        调用服务提供者的url

@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin() {
    String result = restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin/", String.class);
    return result;
}

2.4、测试

1、启动服务提供者、服务消费者

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

        得到微服务调用关系:

         得到依赖关系:

  • 作者:我的眼里只有学习
  • 原文链接:https://blog.csdn.net/weixin_44302046/article/details/124958553
    更新时间:2022年11月23日12:26:31 ,共 1294 字。