Loading

基于消息中间件收集数据

在默认情况下,Zipkin客户端和Server之间是使用HTTP请求的方式进行通信(即同步的请求方式),在网络波动,Server端异常等情况下可能存在信息收集不及时的问题。Zipkin支持与rabbitMQ整合完成异步消息传输。
加了MQ之后,通信过程如下图所示:

RabbitMQ的安装与启动:

windows安装参考地址:

https://blog.csdn.net/caicaimaomao/article/details/126083515

服务端启动

java -jar zipkin-server-2.12.9-exec.jar --RABBIT_ADDRESSES=127.0.0.1:5672
RABBIT_ADDRESSES : 指定RabbitMQ地址、RABBIT_USER: 用户名(默认guest)、RABBIT_PASSWORD : 密码(默认guest)
启动Zipkin Server之后,我们打开RabbitMQ的控制台可以看到多了一个Queue :
其中 zipkin 就是为我们自动创建的Queue队列。

客户端配置:

(1) 配置依赖 

<dependency>
   <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.amqp</groupId>
   <artifactId>spring-rabbit</artifactId>
</dependency>
导入 spring-rabbit 依赖,是Spring提供的对rabbit的封装,客户端会根据配置自动的生产消息并发送到目标队列中。

(2) 配置消息中间件rabbit mq地址等信息

zipkin:
   #base-url: http://127.0.0.1:9411/  #zipkin server的请求地址
   sender:
     type: rabbit
sleuth:
  sampler:
    probability: 1.0  #采样的百分比
rabbitmq:
  host: localhost
  port: 5672
  username: guest
  password: guest
  listener: # 这里配置了重试策略
    direct:
      retry:
        enabled: true
    simple:
      retry:
        enabled: true
修改消息的投递方式,改为rabbit即可,添加rabbitmq的相关配置。

(3) 测试

关闭Zipkin Server,并随意发送请求。打开rabbitmq管理后台可以看到,消息已经推送到rabbitmq。当Zipkin Server启动时,会自动的从rabbitmq获取消息并消费,展示追踪数据。
解决问题:
  1、请求的耗时时间不会出现突然耗时特长的情况,因为请求的链路调用日志都异步的推送到rabbitmq中了。
  2、当ZipkinServer不可用时(比如关闭、网络不通等),追踪信息不会丢失,因为这些信息会保存在Rabbitmq服务器上,直到Zipkin服务器可用时,再从Rabbitmq中取出这段时间的消息。
posted @ 2021-07-29 15:00  1640808365  阅读(119)  评论(0编辑  收藏  举报