sleuth结合zipkin实现链路追踪(三) 基于MQ 并存储链路信息到MySQL

本文基于上一篇(二)  做的改动。

对于MQ收集到的链路信息,当Zipkin-Server作为MQ的消费者时,消费出的链路信息默认存储在内存中,当zipkin重启,该部分信息就会丢失,并且存在内存中有内存限制,默认条数好像是5后面忘了几个零。本文对zipkin稍作改造让他存到MySql中把链路信息做持久化。仅涉及到zipkin-server的改动

Zipkin-Server改动

Gradle新增配置:(上一篇的基础上)

    //storage.type=mysql 将trace信息存储到mysql
    implementation "io.zipkin.java:zipkin-autoconfigure-storage-mysql:${zipkinVersion}"
    //end

Application中新增如下代码:

    ...
    //这些参数可以通过命令行传入,此处为了测试直接代码设置
    static {
        //zipkin-server-shared.yml
        System.setProperty("QUERY_PORT", "8080");
        System.setProperty("RABBIT_ADDRESSES", "localhost:5672");
        System.setProperty("RABBIT_USER", "guest");
        System.setProperty("RABBIT_PASSWORD", "guest");

        //存储到mysql ZipkinMySQLStorageProperties
        //预先创建数据库zipkin
        //初始化mysql,通过zipkin-storage-mysql.jar/mysql.sql脚本做初始化
        System.setProperty("STORAGE_TYPE", "mysql");
        System.setProperty("MYSQL_JDBC_URL", "jdbc:mysql://localhost:3306/zipkin?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&allowMultiQueries=true");
        System.setProperty("MYSQL_USER", "root");
        System.setProperty("MYSQL_PASS", "root");
    }
    ...

重启消费到的链路信息会存储到MySQL,后续重启数据将不会丢失。

此外持久化方式还支持ElasticSearch,Cassandra,Cassandra3,把autoconfigure依赖替换为要使用的存储即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值