3

SQL运行中间件

 1 year ago
source link: https://helloteemo.github.io/2022/06/19/Golang/SQL%E8%BF%90%E8%A1%8C%E4%B8%AD%E9%97%B4%E4%BB%B6/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文最后更新于:2022年6月19日 晚上

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

SQL运行中间件

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

运行环境:

目标数据库:MySQL

SQL框架:database/sqlgorm.io

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

image-20220619231853946

image-20220619231853946

image-20220619231853946

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

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

image-20220619232012835

image-20220619232012835

image-20220619232012835

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

image-20220619232533973

image-20220619232533973

image-20220619232533973

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

还可以水一篇博客,嘿嘿


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK