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

上一篇 搭建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 服务注册中心
  • hello-service 请求服务
  • ribbon-consumer 服务消费
    通过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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值