Spring Cloud Sleuth+RabbitMQ+Zipkin实现微服务分布式链路跟踪

 

前言:现在网络上实现微服务分布式链路跟踪的资料,所使用的Spring Cloud绝大多数都是比较老的版本,最近笔者在学习基于Spring Cloud实现链路跟踪,查阅了大量资料,由于采用的Spring Cloud版本很新,所以踩了不少坑。为此,特写此篇,一来,便于自己今后的翻阅,二来,与大家共勉。

版本介绍:Spring Cloud Greenwish.SR1

服务模块:服务注册中心eureka-server、微服务trace-1、微服务trace-2、微服务trace-3、zipkin服务端(zipkin-server-2.12.8-exec.jar)

说明:这里trace-1服务中的/trace-1接口调用了trace-2的/trace-2接口,/trace-2接口又调用了trace-3服务的/trace-3接口,/trace-3接口直接返回字符串“trace 3”。trace-1和trace-2均实现了服务降级,若调用的目标服务不可用,直接返回错误提示字符串。

对于eureka-server的创建,这里不再赘述。

1. Zipkin Server的配置与启动

在Spring Cloud新版本中不再推荐自己创建zipkin服务端,官网提供了做好的Zipkin Server Jar包,从官网(https://zipkin.io/pages/quickstart.html)下载使用即可,我这里使用的是2.12.8版本。对于该jar的启动,可通过命令行方式,通过参数指定相关的配置。

我这里主要指定了RabbitMQ和MySQL相关配置:

java -jar zipkin-server-2.12.8-exec.jar --zipkin.collector.rabbitmq.addresses=localhost:5672 --zipkin.collector.rabbitmq.password=admin --zipkin.collector.rabbitmq.username=springcloud --zipkin.storage.type=mysql --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=admin

更多参数的查看,可先解压jar,在BOOT-INF/classes/zipkin-server-shared.yml查阅。

Zipkin Server默认9411端口。

2. 微服务模块配置(三个微服务模块均如此)

三个微服务模块运行端口依次为9101、9102、9103

2.1 主要依赖依赖


    org.springframework.cloud
    spring-cloud-starter-zipkin


    org.springframework.boot
    spring-boot-starter-amqp

说明:只需引入以上两个依赖即可,网上很多资料说要引入spring-cloud-sleuth-stream等,但该依赖在Spring Cloud新版本逐渐被废弃了。

2.2 application.yml主要配置

spring:
  sleuth:
    sampler:
      probability: 1
  zipkin:
    sender:
      type: rabbit
  rabbitmq:
    host: localhost
    port: 5672
    username: springcloud
    password: admin

2.3 测试

访问http://localhost:9101/trace-1,返回trace 3字符串

查看RabbitMQ,

Spring Cloud Sleuth+RabbitMQ+Zipkin实现微服务分布式链路跟踪_第1张图片

访问Zipkin Server 页面,查询记录,可成功得到访问跟踪信息,

Spring Cloud Sleuth+RabbitMQ+Zipkin实现微服务分布式链路跟踪_第2张图片

(Demo程序下载:点击这里)

你可能感兴趣的:(Spring,Cloud)