SpringCloud进击 | 四深入:服务链路跟踪(Sleuth+Zipkin+RabbitMQ整合)【Finchley版本】

1.前言

通过 上一节 的学习,我们了解到 Zipkin 服务端,在使用 Spring Boot 2.x 版本后,官方就不推荐自行定制编译了,而是直接提供了编译好的 jar 包来给我们使用,所以在最新版本的 Spring Cloud 依赖管理里已经找不到 zipkin-server 了。

那么怎样直接用官方提供的 jar 包从 RabbitMQ 中获取 trace 信息呢?

接下来我们就对 Spring Cloud Sleuth + Zipkin + RabbitMQ 进行整合和验证。

 

2.准备

  1. 一个服务注册中心:wei-eureka-server,端口 8090(无需修改,正常启动)
  2. 一个服务提供者:wei-service-provider,端口 8010(无需修改,正常启动)
  3. 一个服务消费者:wei-consumer-ribbon,端口 8025(只需要配置 pom 依赖和 spring.zipkin.base-url 修改)

以下进击工作都是对上一节学习到的成果的延用。温故知新哦~

有了上一节的学习,其实对 Spring Cloud Sleuth + Zipkin + RabbitMQ 的整合只需要简单几步就可以实现。

 

3.进击

3.1.服务消费者改造

改造服务消息者:wei-consumer-ribbon。

3.1.1.POM依赖改造

整合 RabbitMQ,在 POM 依赖里引入 spring-cloud-stream-binder-rabbit 即可,别的不用改。

        <!--Spring Cloud sleuth + Zipkin + RabbitMQ 整合-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>

当前模块完整依赖如下:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
		<!--客户端负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <!--Hystrix起步依赖,在Ribbon使用断路器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

        <!--分布式服务调用链路跟踪实现的核心依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

        <!--Spring Cloud Sleuth + Zipkin + RabbitMQ 整合-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.1.2.配置文件改造

为了验证是通过 RabbitMQ 传输的信息,这里将 application.yml 文件的 spring.zipkin.base-url 改为 http://localhost:94111/,即指向一个错误的地址。如下:

server:
  port: 8025
spring:
  application:
    name: wei-consumer-ribbon    # 指定进行服务注册时该服务的名称,服务与服务之间相互调用一般都是根据这个name
  sleuth:
    web:
      client:
        enabled: true
    sampler:
      probability: 1.0                    # 将采样比例设置为1.0,也就是全部都需要。默认是0.1
  zipkin:
    #base-url: http://localhost:9411/     # 指定了 Zipkin 服务器的地址
    base-url: http://localhost:94111/     # 指向错误 Zipkin 服务器的地址,验证RabbitMQ
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka/    # 指定进行服务注册的地址

 

以上,服务消息者改造完成。

启动。

 

3.2.启动 Zipkin Server

使用上一节我们已经下载好的 Zipkin,执行以下命令:

RABBIT_ADDRESSES=localhost java -jar zipkin.jar
【启动 Zipkin Server】

 

好了,以上全部改造完成。测试就绪。

 

4.测试

确认已经正常启动准备工作中的 服务注册中心、服务提供者、服务消费者。

1)接口验证

浏览器多次请求URL:http://localhost:8025/demo/info?name=tester

返回结果:

Hi,tester,我是服务,我被调用了,服务名为:wei-service-provider,端口为:8010[Ribbon + REST]

 

2)RabbitMQ 验证

Admin登陆 RabbitMQ:http://localhost:15672/#/

Queue队列,可以看到多了一个名为 zipkin:

【RbbbitMQ - Queues】

 

【RbbbitMQ - Overview】

 

3)Zipkin UI 验证

Zipkin UI

 

Zipkin UI

 

如此,Spring Cloud Sleuth + Zipkin + RabbitMQ 整合并验证成功。

 

5.总结

Spring Cloud Sleuth + Zipkin + RabbitMQ 整合。

 

6.系列

SpringCloud进击 | 一浅出:服务注册与发现(Eureka)【Finchley版本】
SpringCloud进击 | 二浅出:服务消费者(Ribbon+REST)【Finchley版本】
SpringCloud进击 | 三浅出:服务消费者(Feign)【Finchley版本】
SpringCloud进击 | 四浅出:断路器与容错(Hystrix)【Finchley版本】
SpringCloud进击 | 五浅出:服务网关 - 路由(Zuul Router)【Finchley版本】
SpringCloud进击 | 六浅出:服务网关 - 过滤器(Zuul Filter)【Finchley版本】
SpringCloud进击 | 七浅出:配置中心(Git配置与更新)【Finchley版本】
SpringCloud进击 | 一深入:配置中心(服务化与高可用)【Finchley版本】
SpringCloud进击 | 二深入:配置中心(消息总线)【Finchley版本】
SpringCloud进击 | 三深入:服务链路跟踪(Spring Cloud Sleuth)【Finchley版本】
SpringCloud进击 | 四深入:服务链路跟踪(Sleuth+Zipkin+RabbitMQ整合)【Finchley版本】
SpringCloud进击 | 五深入:断路器监控(Hystrix Dashboard)【Finchley版本】
SpringCloud进击 | 六深入:断路器聚合监控(Hystrix Turbine)【Finchley版本】
SpringCloud进击 | 七深入:高可用的服务注册中心【Finchley版本】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值