如何设计一个底层埋点?
如何 一个 设计 底层 埋点
2023-09-27 14:23:02 时间
背景
想要在程序里监控数据库的操作耗时,想要在底层框架中自动传递链路跟踪信息,这些需求经常会碰到,特别是在构建基础框架的时候。
核心目标只有一个,那就是在底层封装好,不用上层使用人员关心。今天跟大家聊聊常用的底层扩展埋点方式是怎么处理的。
框架自带扩展点
如果你使用的框架在设计的时候,就预留了扩展点就很方便了。比如 Mybatis 的拦截器,我们可以在拦截器中对 SQL 进行监控,改写。
比如阿里的 Sentinel 框架,可以通过 SPI 来扩展 Slot,调整编排顺序,新增自定义的 Slot 来实现限流告警等。
开源框架的质量参差不齐,有在早期设计比较好的,留足了各种扩展点,方便使用者。也有一些没有考虑那么全面,导致你在使用的时候需要进行扩展,发现找不到扩展点,对于框架本身没有提供扩展点的场景,请接着看下面。
修改源码
如果框架没有扩展点,最直接的方式就是修改开源框架的源码来扩展自己想要的功能,通常的做法就是克隆源码到自己的私有仓库中,然后修改、测试、重新打包使用。
像我们
相关文章
- 阿里P8面试官:如何设计一个扛住千万级并发的架构?
- 如何写出优秀的单元测试
- 如何做一个测试经理
- 软件测试之如何重现难以重现的bug
- 等保2.0一个中心三重防护指的是什么?如何理解?
- 如何设计一个自动化测试框架?一个案例教会你
- 如何关闭一个开放的DNS解析器
- 如何使用Aptik来备份和恢复Ubuntu中的Apps和PPAs
- C语言数据类型是如何被大多数计算机系统所支持?
- 如何用nodejs 开发一个命令行交互工具
- git如何将当前仓库的远程分支推到一个新的仓库中?
- 如何远程调试运行在嵌入式设备上的用户空间程序?
- 如何利用 CSS 的动画原理,创作一个乒乓球对打动画
- 如何实现一个公共组件库上传到npm并在项目中使用
- SAP MM 如何看一个Inbound Delivery单据相关的IDoc?
- [Web]如何利用Boostrap框架搭建一个还可以的静态网站(五_子页_脱发指南)
- 还不知道如何在java中终止一个线程?快来,一文给你揭秘
- 如何按逆顺序输出一个多位数各个位上的数字?
- flutter - 如何在Dart/Flutter中将某些元素从一个Map复制到新Map中?
- HarmonyOS ETS 如何使用library module
- 如何测试一个纸杯-----利用引导词整理测试思路
- 宽带提速后如何恰如其分的选择路由器?
- 纯干货!如何做一个成功的大数据项目
- PS网页设计教程XXIX——如何在PS中设计一个画廊布局
- PS网页设计教程XXVIII——如何在PS中创建一个干净的网页布局
- 如何自定义一个通信协议