Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)

Stella981
• 阅读 1059

一、前言

在上一篇文章中: Spring Cloud系列教程(十三):服务追踪Spring Cloud Sleuth+Zipkin(Finchley版本) , 我们初步学习了关于SpringCloud SleuthZipkin的一些基础概念以及简要原理,并且通过实战搭建了SpringCloud SleuthZipkin服务链路追踪数据的传输、收集以及UI界面的查询和相关数据展示,前面也简单提到过Zipkin默认是将数据存放到内存当中的,这种默认方式并不适用于我们的生产环境,一来是比较浪费内存,二来是一旦Zipkin-Server服务重启,数据将全部丢失,本篇博客就实现将数据持久化到Mysql中。

二、zipkin数据存放方式

官方文档中介绍到Zipkin可以将数据保存到CassandraElasticsearchMySQL。国内关于Cassandra的资料较少,这里就暂且不采纳Cassandra

三、如何持久化到MySQL

SpringBoot2.0之前的版本,Zipkin-Server端由我们自己创建项目来搭建。可以比较灵活的选择数据持久化的配置,SpringBoot2.0之后的版本,Zipkin-Server端由官方提供,无需我们自己搭建,那么如何选择去配置将数据持久化到MySQL呢? 这是一个值得思考的问题:

1. 官方提供MySQL初始化脚本

查阅ZipkinGitHub源码,发现其提供了CassandraElasticsearchMySQL的初始化脚本,查看MySQL的初始化脚本,发现提供了3张表的初始化SQL。
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
SQL语句参见: https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

2. 创建zipkin数据库

(1)、找到我们之前下载的zipkin-serverjar包,zipkin-server-2.12.9-exec.jar ,打开zipkin-server-shared.yml文件
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
(2)、打开这个文件,发现zipkin-server-2.12.9-exec.jar提供了CassandraElasticsearchMySQL的持久化配置,只需要填写对应的配置参数即可,而且数据库名称默认是取zipkin,这也就是为什么我标题之直接叫创建zipkin数据库的原因,那么问题来了,我们修改了这个配置文件,将对应的配置参数配置上我们的Mysql地址相关信息,那么这是一个SpringBoot程序的jar包,好像行不通吧,于是,尝试了先将jar包解压开来,在修改完配置后,重新压缩一下,然后将后缀名改为jar,貌似不行哦,那么我们采用SpringBoot提供的命令行形式,请看下面第三点。
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
(3)、创建数据库如下
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)

3. 命令行启动设置Mysql

在启动zipkin时,命令行输入mysql的参数,官方提供命令模板如下:

java -jar zipkin-server-2.12.9-exec.jar 
--zipkin.collector.rabbitmq.addresses=localhost 
--zipkin.collector.rabbitmq.username=xxx 
--zipkin.collector.rabbitmq.password=xxx 
--STORAGE_TYPE=mysql 
--MYSQL_HOST=127.0.0.1 
--MYSQL_TCP_PORT=3306 
--MYSQL_DB=zipkin 
--MYSQL_USER=root 
--MYSQL_PASS=root 

我项目执行的完整命令如下: 可以把这些命令做成一个批处理文件,每次启动时双击就OK了,很方便

java -jar E:\Path\Soft\zipKin\zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=123456

Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)

4. 访问http://127.0.0.1:9411/zipkin

此时是没有数据的
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)

四、测试

方案: 按照顺序依次启动以下服务,然后调用接口请求一次服务,查看zipkin-server的UI界面,发现有一条追踪的数据后,我们停掉zipkin-server,然后再以上面的方式启动(命令行设置Mysql),如果启动后能查询到我们刚才请求的哪一条服务追踪数据,说明OK了同时也可以查看数据表,会发现多了几条数据。
①. eureka-server: 服务注册中心,端口8000;
②. app-pay: 支付服务工程,端口8763;
③. app-member: 会员服务工程,端口8765;
④. app-order: 订单服务工程,端口8761;

步骤1. 访问注册中心:http://127.0.0.1:8000/
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
步骤2. 访问订单服务: http://127.0.0.1:8761/getOrderToMemberToMsg
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
步骤3. 查看zipkin-server的UI界面
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
步骤4. 重启zipkin-server,然后再次查看UI界面,发现依然能够查询到上一次请求的服务链路追踪数据

步骤5. 查看数据库表,发现数据都存储进去了,这就已经可以百分之百证明zipkin-server重启之后读的数据是从Mysql表里面读的。
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)
至此,SpringCloud Sleuth集成Zipkin持久化数据存储Mysql已经实战完成了。

五、源码

源码: https://github.com/Thinkingcao/SpringCloudLearning/tree/master/springcloud-sleuth-zipkin

六、SpringCloud系列教程

下一篇: Spring Cloud系列教程(十五):服务追踪SpringCloud Sleuth集成Zipkin持久化到Elasticsearch(Finchley版本)

SpringCloud教程汇总: Spring Cloud系列教程(汇总篇):专栏汇总篇(持续更新中)

Spring Cloud系列教程(十四):服务追踪SpringCloud Sleuth集成Zipkin持久化数据存储Mysql(Finchley版本)

本文同步分享在 博客“Thinkingcao”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springcloud eureka.instance
1.在springcloud中服务的 InstanceID默认值是:${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance\_id:${server.port}},也就是:主机名:应用名:应用端口。如图1
Stella981 Stella981
3年前
Spring Cloud系列教程(九):服务网关Zuul(Finchley版本)
一、前言Zuul是netflix开源的一个API网关服务器,其本质上是一个webservlet应用。Zuul是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul相当于是PC、APP、H5等客户端和Netflix流应用的Web网站后端所有请求的前门,Zuu
Stella981 Stella981
3年前
Docker系列之MySQL安装教程
Docker系列之MySQL安装教程!在这里插入图片描述(https://oscimg.oschina.net/oscnet/up290e6ea2ceb61c35d155a02d468e92e5.png)有了前面的基础教程Docker系列之常用命令操作手册(https://www.oschina.net/action/GoToLink?
Easter79 Easter79
3年前
SpringCloud demo
1.首先创建一个maven项目  这个maven项目会包含springcloud相关的项目,目录结构如下图:    本项目所有的springcloud版本为Finchley.SR2,对应的springboot的版本为2.0.7.RELEASE。    !(https://img2018.cnblogs.com/
Wesley13 Wesley13
3年前
(转)Linux Shell系列教程之(十四) Shell Select教程
本文属于《LinuxShell系列教程(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.linuxdaxue.com%2Fseries%2Flinuxshellseries%2F)》文章系列,该系列共包括以下18部分:1.LinuxShell系列教程之(
Stella981 Stella981
3年前
Choerodon的微服务之路(一):如何迈出关键的第一步
本文是 Choerodon猪齿鱼(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fchoerodon.io%2F)微服务系列文章的第一篇,在文章中将介绍当前比较流行的两种微服务架构,即Dubbo和SpringCloud,同时将总结Choerodon猪齿鱼在选择使用微服务架构中的
Stella981 Stella981
3年前
Spring Cloud Alibaba学习笔记(20)
参考:https://cloud.spring.io/springcloudstatic/Greenwich.SR2/single/springcloud.html\_global\_filters(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fcloud.spring.io%
Stella981 Stella981
3年前
Spring Cloud系列教程(六):服务注册与发现Consul(Finchley版本)
一、前言在微服务领域,服务注册与发现是其中很重要的一个模块,主要用于服务治理问题;在分布式Dubbo中常用的服务发现与注册中心是Zookeeper,Cosul与其类似,在SpringCloud刚占领市场的时候,SpringCloud微服务框架默认使用的注册中心组建是Eureka,总所周知,Eureka已经开始闭源了,
Wesley13 Wesley13
3年前
1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列1\.容器化部署一套云服务之Jenkins(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fjackson0714%2Fp%2Fdeploy1.html)一、购买服务器服务器!caeef00
Stella981 Stella981
3年前
RapidScada免费开源Scada组态软件系列教程1
RapidScada免费开源Scada组态软件系列教程系列文章目录RapidScada免费开源Scada组态软件系列教程1初识RapidScada(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fq383186554%2Fartic