SpringCloud Sleuth分布式链路跟踪

首页 / 新闻资讯 / 正文

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. 客户端发起请求
  2. 后端系统中,经过多个不同的服务节点调用
  3. 产生结果

1.1.2、造成问题

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

1.2、解决方法

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

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

        得到微服务调用关系:

         得到依赖关系: