如何设计一个底层埋点?
创始人
2025-05-28 02:38:05
0

文章目录

  • 背景
  • 框架自带扩展点
  • 修改源码
  • 同名文件覆盖
  • 切面拦截
  • Java Agent

背景

想要在程序里监控数据库的操作耗时,想要在底层框架中自动传递链路跟踪信息,这些需求经常会碰到,特别是在构建基础框架的时候。
核心目标只有一个,那就是在底层封装好,不用上层使用人员关心。今天跟大家聊聊常用的底层扩展埋点方式是怎么处理的。

框架自带扩展点

如果你使用的框架在设计的时候,就预留了扩展点就很方便了。比如 Mybatis 的拦截器,我们可以在拦截器中对 SQL 进行监控,改写。

比如阿里的 Sentinel 框架,可以通过 SPI 来扩展 Slot,调整编排顺序,新增自定义的 Slot 来实现限流告警等。

开源框架的质量参差不齐,有在早期设计比较好的,留足了各种扩展点,方便使用者。也有一些没有考虑那么全面,导致你在使用的时候需要进行扩展,发现找不到扩展点,对于框架本身没有提供扩展点的场景,请接着看下面。

修改源码

如果框架没有扩展点,最直接的方式就是修改开源框架的源码来扩展自己想要的功能,通常的做法就是克隆源码到自己的私有仓库中,然后修改、测试、重新打包使用。

像我们之前用了

相关内容

热门资讯

使用Spring Boot和C... 原理 Spring Boot是一个基于Spring框架的快速开发应用程序的框架,其提供...
python数据类型常见操作 目录 一、python常见的赋值方式 1.交互性赋值方式 2.连续性赋值方式 3.单独赋值方式 二...
系统架构:经典三层架构 引言 经典三层架构是分层架构中最原始最典型的分层模式,其他分层架构都是其变种或扩展&#...
c++ 流 stream Text Stream: 有解析(parse)和格式化&#...
【springboot】web... 5、视图解析与模板引擎 视图解析:SpringBoot默认不支持 JSP,...
【Java注释】如何自定义注解... 一,如何自定义注解 1.1 在编译时进行格式检查(JDK内置的三个基本注解) ...
Redis案例实战_微信抢红包 目录需求分析架构设计编码实现拓展 需求分析 首先想到发红包的流程 1.发红包 2.抢红包 3.记录红...
关于朋友的思考 关于朋友的思考 朋友就是你高兴时想见的人,烦恼时想找的人,得到对方帮助...
Cobalt Strike--... 获取凭证和哈希      要dump哈希,通过 [beacon] → Access →...
第二章 运算方法和运算器 引入:1. 运算器的运算功能 计算机能够进行的运算包括:算术运算和逻辑运...
DevData Talks 直... 📊本期分享 本期 DevData Talks 邀请到了微众银行研发效能负责人余伟老师...
postgresql基本操作与... postgresql基本操作与基本对象 postgresql是一个C/S架构的大型软件࿰...
【洛谷 P1028】[NOIP... [NOIP2001 普及组] 数的计算 题目描述 给出自然数 nnn,要求按如下方式构...
实验一 Java Web 入门 一、实验目标: 1、了解并学会配置MyEclipse集成开发环境,学会在...
人人都能学会,深扒网络模型OK... 简单理解 http 的三次握手,首先客户端先进行一个connect连接,...
还在用传统工具进行做计划?试试... 说起计划,很多人以为自己制定计划的能力很强,他们会在记事本上或者日历上定...
Vue插槽理解 Vue插槽理解插槽 插槽 slot又名插槽,vue内容分发机制,组件内...
使用asan检测内存泄漏、堆栈... 一、使用过程 操作过程参考:链接缘起:程序在移动端崩溃,m...
一起学习 学习二叉树  前言 树是数据结构中的重中之重,尤其以各类 二叉树为学习的难点。一直以来࿰...
【码字必看】一篇文章带你轻松上... 文章目录🍬前言😮什么是MarkDown🧐为什么要学习...