全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

插件系统专题

专题说明

本专题系统讲解 GORM 插件系统的核心机制,包括插件注册原理、Plugin 接口规范、官方插件使用(Prometheus、DB Resolver、Soft Delete 等)以及自定义插件开发,帮助开发者掌握 GORM 扩展能力。

学习目标

  1. 理解 GORM 插件系统的架构设计和注册机制
  2. 掌握官方常用插件的使用方法和配置
  3. 能够开发自定义插件扩展 GORM 功能
  4. 了解插件生命周期和回调链的执行顺序

学习内容

本专题涵盖以下知识点:

  • 插件注册与 Plugin 接口规范
  • Prometheus 监控指标采集插件
  • DB Resolver 读写分离与分库插件
  • 自定义插件开发与回调链集成
  • 插件在 GORM 生命周期中的执行时机

学习建议

  1. 先理解 GORM 回调链机制,再学习插件如何挂载到回调链
  2. 结合实际业务场景理解插件的作用范围和执行顺序
  3. 动手编写简单自定义插件,加深对 Plugin 接口的理解

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

Prometheus 监控插件通过注册 GORM 的回调,在每个 SQL 执行后记录执行时间和结果。

A

B

单选题
2

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

3

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

4

集成 Prometheus 监控插件的主要目的是?

A

监控数据库连接池状态和查询性能

B

自动优化慢查询

C

备份数据库

D

自动扩容数据库连接

5

如何在 GORM 中注册一个插件?

A

db.Use(plugin)

B

db.Plugin(plugin)

C

db.Register(plugin)

D

db.Add(plugin)

6

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

7

集成 Jaeger 链路追踪插件的主要目的是?

A

监控数据库性能

B

追踪 SQL 执行的完整调用链路

C

自动优化查询

D

备份数据库

8

使用 GORM Prometheus 插件时,如何为数据库指标添加自定义标签(如服务名、环境)?

A

在插件初始化时通过 WithLabel/Labels 配置传递自定义标签

B

修改 Prometheus 插件的源代码

C

在 Prometheus 服务端配置文件中添加标签

D

通过数据库连接字符串传递标签参数

9

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

10

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

11

如何配置 GORM 的慢查询日志?

A

设置 Logger 的 SlowThreshold

B

使用第三方插件

C

在数据库中配置慢查询日志

D

以上都可以

12

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

13

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 GORM 的 Prometheus 插件

B

手动注册指标

C

通过 HTTP 中间件采集

D

通过日志解析采集

14

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 GORM 的 Prometheus 插件

B

手动注册指标

C

通过 HTTP 中间件采集

D

通过日志解析采集

15

在 GORM 中集成 Prometheus 监控指标采集,应该使用什么方式?

A

使用 gorm.io/plugin/prometheus 插件

B

手动注册 Prometheus 指标

C

使用 HTTP 中间件

D

解析 GORM 日志

多选题
16

Prometheus 支持以下哪些指标类型?

A

Counter 计数器(只增不减)

B

Gauge 仪表盘(可增可减)

C

Histogram 直方图(分布统计)

D

Summary 摘要(分位数统计)

17

GORM 的 Jaeger 插件如何实现 SQL 执行的链路追踪?

A

使用 Context 传递 Trace ID

B

在回调中创建 Span 记录 SQL 执行

C

将 SQL 语句和参数记录到 Span 属性

D

自动将慢查询标记为错误

18

GORM 插件可以用于以下哪些场景?

A

数据库监控

B

链路追踪

C

软删除增强

D

自动审计日志

填空题
19

GORM 插件需要实现____________方法返回插件名称,以及____________方法在数据库连接建立后初始化。

20

使用 Jaeger 链路追踪时,需要在请求的____________中传递____________,GORM 插件会自动提取并创建____________记录 SQL 执行。

参考答案
1.正确 2.A 3.A 4.A 5.A 6.A 7.B 8.A 9.A 10.A 11.A 12.A 13.A 14.A 15.A 16.A;B;C;D 17.A;B;C 18.A;B;C;D 19.Name() string;Initialize(db *gorm.DB) error 20.Context;Trace信息;Span
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 性能优化与调优专题
下一个专题 → 数据库迁移基础专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码