利用Zipkin追踪Mysql数据库调用链

在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件、哪些微服务、请求总时长、每个组件所花时长 等信息。本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。


概述

在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件哪些微服务请求总时长每个组件所花时长 等信息。

本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。


扩展ZipkinTool组件

ZipkinTool是在《微服务调用链追踪中心搭建》一文中编写的与Zipkin通信的工具组件,利用其追踪微服务调用链的,现在我们想追踪Mysql数据库调用链的话,可以扩展一下其功能。

  • pom.xml添加依赖:
  • 在ZipkinConfiguration类中添加MySQLStatementInterceptorManagementBean

添加Mysql数据库访问的微服务

依然继承前文:《微服务调用链追踪中心搭建》,我们改造一下文中的ServiceC这个微服务,在其中添加与Mysql数据库的交互。

  • pom.xml中添加JDBC和Mysql依赖
  • application.properties中添加Mysql连接的配置
  • Controller中添加JdbcTemplate访问数据库的代码

启动Mysql数据库服务

1. 启动Mysql容器

2. 再启动一个Mysql容器,接入其中做一些设置

  • 首先进入mysql命令行
  • 接下来创建数据库zipkin: 用于存放Zipkin所收集的数据

这里创建了三个数据表。

该Sql文件可以从以下链接获得:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/src/main/resources/mysql.sql

Sql脚本执行完成后,可以看到zipkin相关的三个表已经建成:

  • 创建数据库test:用作测试数据库

这里插入了一条数据用于实验。


启动zipkin服务


启动Mysql数据库访问的微服务(即ServiceC)

在浏览器中输入:localhost:8883/mysqltest,如果看到以下输出,就可以证明数据库调用操作已经成功了!


Zipkin追踪数据库调用实际实验

打开Zipkin Web UI,点击服务名下拉列表能看见已经成功识别了Mysql数据库调用服务

  • 选中mysqlservice后,点击Find Traces

可以看到 首次查询 Mysql的调用链追踪信息,有很多

随便点开某一个查看:

  • 接下来浏览器中再次输入:localhost:8883/mysqltest

目的是再次触发Mysql的调用,然后再次Find Traces,可以看到追踪数据类似下图:包含两次Mysql的query动作:

点开第一个query查看,其实际上是在 尝试连接Mysql数据库

点开第二个query查看,发现这里才是 实际查询业务

从图形化界面上可以清楚地知道每个阶段的详细步骤与耗时,因此可以用来分析哪个SQL语句执行相对较慢。


后记

本文实验所用源码已经开源,需要的话请 自取

作者一些其他容器化、微服务化方面的文章:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏耕耘实录

CentOS7.X的系统管理、安全设置及系统优化思路

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

28020
来自专栏smy

webpack的css压缩不兼容IOS8问题探索

31540
来自专栏MYSQL轻松学

MYSQL内存管理—数据的桥梁

SQL解析: ? ? MySQL线程: ? 内存管理: ? 共享表空间: ? 临时表空间: ? 物理文件: ? 体系结构涉及的东西太多,此文只是片面的介绍了一...

50570
来自专栏FreeBuf

一种新型的Web缓存欺骗攻击技术

为了减少WEB响应时延并减小WEB服务器负担,现在WEB缓存技术已经用的非常普遍了,除了专门的CDN,负载均衡以及反向代理现在也会缓存一部分的网页内容。这里我要...

13240
来自专栏淡定的博客

windows下WorkerMan实现简单的多人在线聊天

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。

1K10
来自专栏北京马哥教育

10个方法助你轻松完成Linux系统恢复

在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

56250
来自专栏Java技术分享

如何用redis/memcache做Mysql缓存层?

目前公司的一个项目,数据库用的是Mysql,正在考虑用redis/memcached做数据库的缓存层,目前的想法就是在读DB前,先读缓存层,如果有直接返回,如果...

47390
来自专栏老蒋专栏

腾讯云服务器Windows系统添加数据库盘并挂载

老蒋平时较多的时候VPS、服务器用Linux系统,只是有些需要在远程运行软件的时候会用到Windows系统。在前几天的腾讯云系列文章中老蒋有介绍到Linux系统...

66400
来自专栏较真的前端

不可忽视的前端安全问题——XSS攻击

18950
来自专栏bboysoul

编译安装squid

什么是squid,简单的说squid是一款代理缓存软件就是加速网站访问的,国内部分cdn服务用的就是squid,cdn大家应该清楚吧,内容分发网络,cdn的作用...

15630

扫码关注云+社区

领取腾讯云代金券