SQL运行中间件

本文最后更新于:2022年7月29日 下午

这是一个我很早之前书写的中间件,主要用于监控、收集项目中所运行的所有SQL信息,并对他们进行分析

SQL运行中间件

本项目用于公司特定的运行环境,没有做其余的兼容措施,只是想分享一下解决这种问题的思路。

运行环境:

目标数据库:MySQL

SQL框架:database/sqlgorm.io

基础知识

如果我们需要监控所运行的SQL我们就需要了解Go gorm.io 框架的执行流程,这不做更多的介绍直接说结论,所有的SQL都会由一个叫做 SQLCommon 的对象执行。我们先看一下它的结构

image-20220619231853946

这样的话我们只需要代理这个接口的对象就可以拿到所有的SQL了。

实现

接下来我们开始代理这个接口

image-20220619232012835

代理接口之后就可以拿到SQL的信息了,为了方便支持更多的监控,我们实现一个观察者模式,只要有SQL运行把消息发送过去就行。

image-20220619232533973

写在最后

更多的就不想写了,就是一个比较基础的功能,主要是实现的思路比较奇特。

还可以水一篇博客,嘿嘿


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!