在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件、哪些微服务、请求总时长、每个组件所花时长 等信息。本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。
在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件、哪些微服务、请求总时长、每个组件所花时长 等信息。
本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。
ZipkinTool是在《微服务调用链追踪中心搭建》一文中编写的与Zipkin通信的工具组件,利用其追踪微服务调用链的,现在我们想追踪Mysql数据库调用链的话,可以扩展一下其功能。
依然继承前文:《微服务调用链追踪中心搭建》,我们改造一下文中的ServiceC这个微服务,在其中添加与Mysql数据库的交互。
1. 启动Mysql容器
2. 再启动一个Mysql容器,接入其中做一些设置
这里创建了三个数据表。
该Sql文件可以从以下链接获得:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/src/main/resources/mysql.sql
Sql脚本执行完成后,可以看到zipkin相关的三个表已经建成:
这里插入了一条数据用于实验。
在浏览器中输入:localhost:8883/mysqltest,如果看到以下输出,就可以证明数据库调用操作已经成功了!
打开Zipkin Web UI,点击服务名下拉列表能看见已经成功识别了Mysql数据库调用服务
可以看到 首次查询 Mysql的调用链追踪信息,有很多
随便点开某一个查看:
目的是再次触发Mysql的调用,然后再次Find Traces,可以看到追踪数据类似下图:包含两次Mysql的query动作:
点开第一个query查看,其实际上是在 尝试连接Mysql数据库
点开第二个query查看,发现这里才是 实际查询业务
从图形化界面上可以清楚地知道每个阶段的详细步骤与耗时,因此可以用来分析哪个SQL语句执行相对较慢。
本文实验所用源码已经开源,需要的话请 自取。
作者一些其他容器化、微服务化方面的文章: