启动与部署检查

启动成功不等于就绪

StartBackground 同步创建 gRPC listener,固定等待约 2 秒后在 goroutine 中启动 HTTP listener。HTTP 端口绑定错误会触发 panic,返回成功不能作为全部 listener 已就绪的保证。

检查当前含义生产补充
/pingHTTP handler 可达,返回 OK不作为数据库、缓存 readiness
/api/healthz?service=...Gateway/RPC 调用及服务名匹配增加业务必要依赖检查
标准 gRPC health模板注册了 health Server按服务与依赖状态显式更新
/version当前二进制构建信息与发布 commit/制品摘要核对
/metrics指标端点核对导出配置及业务指标

health 查询参数 service 对应配置 services.service_code。按业务决定 liveness 与 readiness:短暂依赖故障通常应停止接流量,是否重启进程另行判断。

初始化与退出边界

框架 Init 顺序为 debugger、services、security、database、cachebox、observables、cloudevents、RPC 配置、objstore、frontend、automations、aiconnector。错误向调用方返回,但尚无跨全部步骤的事务回滚。

模板退出先 Deregister 再创建 30 秒 timeout;前者尚未统一释放所有资源。RPC Shutdown 中 HTTP shutdown 出错会提前返回,gRPC 使用 GracefulStop,没有以 context 超时触发强制 Stop 的兜底。因此不能承诺整个退出一定在 30 秒内完成。

应用应验证数据库、缓存、自定义 goroutine、MCP 和遥测的关闭;部署平台为终止预留时间,并测试进行中的长请求。不要单靠模板 timeout 字面量设置 termination grace period。

发布前验证

  1. 固定 CLI、pkg、API include commit 和工具链;完成生成、单测、构建并审查 diff。
  2. 使用真实配置启动,验证各 listener、认证、权限、数据库 schema 和业务依赖。
  3. 运行 make test-e2e;模板黑盒测试需独立运行服务,默认 E2E_BASE_URL=http://127.0.0.1:8080,凭据与 service code 按环境设置。
  4. 发送 SIGTERM,观察接流量停止、长请求退出、连接释放与进程退出时间。
  5. 演练回退 commit/制品,并单独验证数据库兼容性及恢复。

同进程多实例需额外验证全局 Prometheus 注册与 OpenTelemetry provider;不能直接把多实例初始化视为互相隔离。

来源:RPC 实现、配置注销、模板退出。