查看原文
其他

Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin

周立 IT牧场 2021-08-10

众所周知,Spring Cloud Sleuth有两种方式整合Zipkin:

  • HTTP直连Zipkin方式


  • MQ方式,架构如下图:



Spring Cloud Edgware及更高版本中,Sleuth使用MQ方式整合Zipkin的玩法发生了巨大改变。本文将贴出新旧版本中Sleuth如何整合Zipkin的具体操作。MQ使用的是RabbitMQ(读者也可使用Kafka)。

Dalston及更低版本

如果您使用Spring Cloud Dalston或更低版本,那么整合步骤如下:

服务器端

一、依赖:

  1. <dependency>

  2.  <groupId>org.springframework.cloud</groupId>

  3.  <artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>

  4. </dependency>

  5. <dependency>

  6.  <groupId>org.springframework.cloud</groupId>

  7.  <artifactId>spring-cloud-starter-sleuth</artifactId>

  8. </dependency>

  9. <dependency>

  10.  <groupId>org.springframework.cloud</groupId>

  11.  <artifactId>spring-cloud-stream-binder-rabbit</artifactId>

  12. </dependency>

  13. <dependency>

  14.  <groupId>io.zipkin.java</groupId>

  15.  <artifactId>zipkin-autoconfigure-ui</artifactId>

  16. </dependency>

二、启动类上添加注解 @EnableZipkinStreamServer 。

三、配置:

  1. server:

  2.  port: 9411

  3. spring:  

  4.  rabbitmq:

  5.    host: localhost

  6.    port: 5672

  7.    username: guest

  8.    password: guest

微服务端

一、加依赖:

  1. <dependency>

  2.  <groupId>org.springframework.cloud</groupId>

  3.  <artifactId>spring-cloud-sleuth-stream</artifactId>

  4. </dependency>

  5. <dependency>

  6.  <groupId>org.springframework.cloud</groupId>

  7.  <artifactId>spring-cloud-starter-sleuth</artifactId>

  8. </dependency>

  9. <dependency>

  10.  <groupId>org.springframework.cloud</groupId>

  11.  <artifactId>spring-cloud-stream-binder-rabbit</artifactId>

  12. </dependency>

二、配置:

  1. spring:

  2.  rabbitmq:

  3.    host: localhost

  4.    port: 5672

  5.    username: guest

  6.    password: guest


Edgware及更高版本

对于Edgware,以上方式也可使用,但目前已标注为 废弃 ,未来将被删除!

从Edgware开始,应如下整合Zipkin——

服务器端

一、依赖:

  1. <dependency>

  2.  <groupId>io.zipkin.java</groupId>

  3.  <artifactId>zipkin-autoconfigure-ui</artifactId>

  4. </dependency>

  5. <dependency>

  6.  <groupId>io.zipkin.java</groupId>

  7.  <artifactId>zipkin-server</artifactId>

  8. </dependency>

  9. <dependency>

  10.  <groupId>io.zipkin.java</groupId>

  11.  <artifactId>zipkin-autoconfigure-collector-rabbitmq</artifactId>

  12.  <version>2.3.1</version>

  13. </dependency>

二、启动类上添加 @EnableZipkinServer 。

三、配置:

  1. server:

  2.  port: 9411

  3. zipkin:

  4.  collector:

  5.    rabbitmq:

  6.      addresses: localhost:5672

  7.      password: guest

  8.      username: guest

  9.      queue: zipkin

微服务端

一、依赖:

  1. <dependency>

  2.  <groupId>org.springframework.cloud</groupId>

  3.  <artifactId>spring-cloud-starter-zipkin</artifactId>

  4. </dependency>

  5. <dependency>

  6.  <groupId>org.springframework.amqp</groupId>

  7.  <artifactId>spring-rabbit</artifactId>

  8. </dependency>

二、配置:

  1. spring:

  2.  rabbitmq:

  3.    host: localhost

  4.    port: 5672

  5.    username: guest

  6.    password: guest

  7.  zipkin:

  8.    rabbitmq:

  9.      queue: zipkin


对比及分析

对比后不难发现,从Edgware开始,Sleuth基于MQ整合Zipkin更加的简化!不过,改动还是比较大的。官方为什么要做这个改进呢?答案如下——

  1. Spring Cloud Edgware之前的版本使用 Zipkin1.x ,要想MQ方式收集数据,需整合 spring-cloud-sleuth-stream 。而在Edgware及更高版本中,使用 Zipkin2.x。 Zipkin2.x 本身已支持基于MQ的数据收集方式,故而 spring-cloud-sleuth-stream 将被废弃!

  2. 两种使用方式不兼容,请读者务必注意!


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存