• Spring Cloud 之 链路追踪Sleuth和Zipkin,RabbitMQ整合(十七)


    PS:源码已上传Github, 欢迎指教。https://github.com/shileishmily/spring-cloud-x.git

    上一节讲了Sleuth和Zipkin的整合,实现了链路追踪监控,但是有一个问题,Sleuth通过http调用将采集的链路信息发送给Zipkin Server。当我们系统并发量很大的时候,同步调用肯定会影响性能,甚至导致业务不可用。所以本篇讲一下异步采集信息如何搭建。

    Sleuth将链路信息发送到RabbitMQ,消费者消费消息存储到Mysql。然后Zipkin基于Mysql分析链路追踪信息。

    1、RabbitMQ启动

    如何搭建RabbitMQ本篇不讲解。访问http://localhost:15672/,用户名密码都是guest。

     2、创建数据库、表信息

    建表的脚本文件mysql.sql 在 GitHub官方地址能查到,链接如下:

    https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

    3、启动Zipkin Server

    Zipkin配置文件内容可以查看 GitHub:https://github.com/openzipkin/zipkin/blob/master/zipkin-server/src/main/resources/zipkin-server-shared.yml

    启动命令:java -jar zipkin-server-2.23.2-exec.jar --zipkin.collector.rabbitmq.addresses=127.0.0.1 --zipkin.storage.type=mysql - -zipkin.storage.mysql.host=127.0.0.1 --zipkin.storage.mysql.port=3306 --zipkin.storage.mysql.username=xxxxx --zipkin.storage.mysql.password=xxxxx --zipkin.storage.mysql.db=zipkin

    4、修改Zipkin Client

    4.1 以x-demo-springcloud-pay-service为例,Client增加spring-cloud-stream-binder-rabbit依赖

    dependencies {
        compile("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client")
        compile("org.springframework.cloud:spring-cloud-starter-zipkin")
        compile("org.springframework.cloud:spring-cloud-starter-netflix-ribbon")
        compile("org.springframework.cloud:spring-cloud-stream-binder-rabbit")
    }

    4.2 配置文件修改

    以x-demo-springcloud-pay-service为例,为了证明链路消息采集是通过MQ传输的,我们把Zipkin的配置地址注掉。

    spring:
      application:
        name: x-demo-springcloud-pay-service
    #  zipkin:
    #    base-url: http://127.0.0.1:9411/
      sleuth:
        sampler:
          probability: 1.0
    
    server:
      port: 8087
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
    logging:
      level:
        root: debug

    参考4.1和4.2依次修改x-demo-springcloud-user-service,x-demo-springcloud-order-service,然后重启三个微服务。

    5、访问http://localhost:8087/pay

    6、观察RabbitMQ队列

    从下图看到zipkin队列有数据接收了。

    7、查看Mysql数据库

    zipkin_annotations表:

    zipkin_spans表:

    到此数据入库,整个流程没有问题了。

    再次刷新Zipkin Server监控,WebUI也可以看到数据了。

    到此Spring Cloud Sleuth和Zipkin,RabbitMQ整合完成,实际生产环境中运用远远比这个要复杂的多,大家还需要多摸索。

  • 相关阅读:
    spring集成quartz
    ScheduledExecutorService
    中国方言输入法Rime入门
    TinyOS实例介绍
    公式输入较好的参考
    USRP IQ信号分析
    法语学习(1)--入门资料推荐
    Python小技巧
    编码知识
    jaspersoft studio colunm header and detail ,detail中显示多列数据
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14464323.html
Copyright © 2020-2023  润新知