bootCheck

command
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2026 License: MIT Imports: 8 Imported by: 0

README

BootCheck - 服务启动引导器

TODO/现在的问题

已改为基于标准 SQL 文件的差异升级流程(临时库重建 + 结构对比), 不再依赖 gorm.DB.AutoMigrate 作为生产结构升级手段。 同时这也意味着,bootCheck依赖额外的sql脚本,部署时需要更新生成服务器上的sql脚本

当前仍保留的安全策略:

  • 自动执行仅限新增类变更(建表、加列、加索引)。
  • 对 Drop / Modify / Change / Rename 等非增量变更只告警并要求人工审核执行。
  • 每次自动执行的 SQL 会落盘记录到 db_update_YYYYMMDDThhmmss.sql

核心定位

BootCheck 是一个 Go 语言编写的 服务启动引导器。它旨在作为微服务或应用在其他服务进程启动前先被运行并且正确返回。该程序自动完成运行所需的一切前置条件准备与验证,确保服务拥有一个正确、就绪的运行环境。

核心职责

  1. 配置与密钥加载:从安全源加载并验证配置。
  2. 依赖健康检查:自动验证数据库、缓存、消息队列等中间件的网络连通性与权限。
  3. 数据库版本管理:自动检查并执行数据库结构(Schema)的版本化迁移,保证表结构始终与代码定义一致。

与相关概念的区别

模块 阶段 目标 使用者 与 BootCheck 的关系
BootCheck 启动时 (Before main()) 让服务能跑起来 服务自身(自动化) 前提
Admin 管理后台 运行时 (After main()) 让人管理业务数据 管理员(人机交互) BootCheck 准备好数据库,Admin 管理其中数据。
PM2 / Supervisor 运行时 (Process Lifecycle) 让进程持续运行 运维人员(自动化) BootCheck 确保服务依赖就绪,PM2 确保服务进程稳定。

使用场景

在以下场景中,你应首先使用或集成 BootCheck:

  • 服务启动时,自动检查数据库连接并执行缺失的迁移。
  • 在持续集成/部署流水线中,作为新版本容器启动的第一步。
  • 在 Kubernetes 中,可被封装为 Init Container,为主容器的启动准备环境。

简而言之:BootCheck 确保服务“出生”时就健康;Admin 后台和 PM2 则负责服务“成长”过程中的管理和维持。

以下是具体保证

  • 根据默认配置文件,检查所有中间件是否可用
    • 包括Mysql/Redis/RabbitMQ等
    • 使用pkg下对应的封装来做简单的测试
  • Mysql检查到指定数据库不存在,或表结构不一致时
    • 指定库不存在时,需要创建数据库
    • 创建时要指定 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
    • 表结构不一致时,通过 gorm的方法尝试更新表结构
    • 禁止删除列和表,因此无法顺利更新时报错等待人工处理
    • 数据库的变更需要输出记录,命名为 db_update_YYYYMMDDThhmmss.sql

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL