SringCloud通过RabbitMQ实现Zipkin持久化到Mysql8

拥有回忆 提交于 2020-11-13 01:16:14

上一篇通过自己搭建zipkin的方式实现分布式链路跟踪,但没有将请求服务的链路信息存储到数据库,以下通过RabbitMQ实现Zipkin持久化到Mysql8。使用zipkin 2版本提供了 jar包启动应用。

  • Java 8及以上版本
  • Spring Cloud Hoxton.SR8
  • RabbitMQ 3.8.9 Erlang 23.1.1
  • zipkin-server-2.22.2
  • Mysql8
一、搭建Zipkin Server

​ mac中安装 RabbitMQ

​ 1. 安装Erlang,执行brew install erlang命令。

​ 2. 安装RabbitMQ Server,执行 brew install rabbitmq命令。

​ 进入目录/usr/local/sbin,执行rabbitmq-server,访问RabbitMQ http://localhost:15672 #guest guest

​ 创建一个名为 zipkin 的数据库,从Github下载 zipkin 的sql语句,导入数据库。

下载zipkin-server包,执行如下指令启动zipkin应用。

	java -jar zipkin-server-2.22.2-exec.jar --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_DB=zipkin --STORAGE_TYPE=mysql  --zipkin.collector.rabbitmq.addresses=127.0.0.1:5672 --zipkin.collector.rabbitmq.username=test --zipkin.collector.rabbitmq.password=123456

​ 看到如下界面,说明zipkin应用启动成功。 在这里插入图片描述 ​ 访问RabbitMQ,可以看到Queues标签页出现了kipzin记录,请求服务的链路信息将发送到该队列。

在这里插入图片描述

#####二、搭建服务注册中心eureka-service,请求服务ribbon-consumer、hello-service应用,通过RabbitMQ实现Zipkin持久化到Mysql8。

ribbon-consumer服务 application.yml 配置如下:

server:
  port: 9000
spring:
  application:
    name: ribbon-consumer
  zipkin:
    base-url: http://localhost:9411/
    sender:
      type: rabbit
    sleuth:
      sampler:
        probability: 1.0  #采样的百分比
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: test
    password: 123456
    listener: # 这里配置了重试策略
      direct:
        retry:
          enabled: true
      simple:
        retry:
          enabled: true

hello-service应用application.yml 配置如下:

server:
  port: 8085
spring:
  application:
    name: hello-service
  zipkin:
    base-url: http://localhost:9411/
    sender:
      type: rabbit
    sleuth:
      sampler:
        probability: 1.0  #采样的百分比
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: test
    password: 123456
    listener: # 这里配置了重试策略
      direct:
        retry:
          enabled: true
      simple:
        retry:
          enabled: true

ribbon-consumer、hello-service服务pom.xml添加如下:

<!-- zipkin -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- rabbit -->
<dependency>
  <groupId>org.springframework.amqp</groupId>
  <artifactId>spring-rabbit</artifactId>
</dependency>

启动eureka-consumer注册中心,ribbon-consumer、hello-service服务,浏览器访问:http://localhost:9000/hello

访问RabbitMQ ,切换到队列ziipkin页面,有波动表示有请求链路信息发送到了队列,如下图:

在这里插入图片描述

用mysql客户端,查看zipkin_spans表,有记录说明 zipkin通过ribbitMQ持久化数据到了mysql,如下图: 在这里插入图片描述

在浏览器访问Zipkin,输入服务名ribbon-consumer,可以查询请求服务链路的信息。

在这里插入图片描述

至此,SringCloud分布式请求链路跟踪搭建完成。

源码地址

参考: openzipkin:https://github.com/openzipkin/zipkin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!