Skip to content

v1.1.0

Choose a tag to compare

@EthanCodeCraft EthanCodeCraft released this 23 Jun 15:14

v1.1.0 — HA & Manager 化

本版本定位为 HA & Manager 化 release:高可用与生产就绪改进 + 组件 Manager 化。对应体检报告 #10-#24。
⚠️ 含少量破坏性变更,升级前请阅读「升级说明」。

Breaking ⚠️

  • 删除 wire 包及 WithWire Option(WithoutWire 保留空 stub 兼容)
  • 删除 AppConfig.TokenExpire(与 JWTConfig.Expire 重复)
  • JWTConfig.Expireint(秒)改为 time.Duration"24h"
  • 删除 StartServerWithPortGracefulShutdown 双轨函数

Added ✨

组件 Manager 化(#10)

storage / cache / redis / jwt / logger 五组件新增 XxxManager + DefaultXxx + SetDefaultXxxManager,包级 facade 保留兼容存量。支持多实例与测试注入 mock。

Lifecycle Hooks(#12)

WithHook(Hook{OnInit/OnStart/OnReady/OnStop}),覆盖 Init/启动/就绪/关闭各阶段。

App.Go + in-flight goroutine(#22)

App.Go(func(ctx)) 启动受管理的后台 goroutine,Shutdown 时 cancel + wg.Wait(带超时)。

Server 参数配置化(#13)

server 新增 read_timeout/write_timeout/idle_timeout/shutdown_timeout/max_header_bytes/tls/unix_socket/response_mode,支持 TLS 与 unix socket。

JWTConfig time.Duration(#14)

jwt.expire/refresh_expire 用 Duration("24h"/"168h"),新增 issuer/algorithm

Config Validate(#16)

Config.Validate()Manager.Load 后自动调用,启动期拦截非法配置。

response REST 模式(#15)

response.SetMode(ModeBusiness|ModeREST),默认兼容存量;ModeREST 按错误码映射 HTTP status。新增 response.Custom()

livez / readyz(#17)

/livez(存活,始终 200)+ /readyz(就绪,依赖检查 503),K8s probe 友好。

Prometheus metrics(#18)

/metrics 端点 + middleware.Metrics() 采集 http_requests_total/http_request_duration_seconds/http_requests_in_flight

请求级 Timeout 中间件(#19)

middleware.Timeout(d),下游走 c.Request.Context() 级联取消。

依赖健康自愈(#21)

主库后台探活 + replica 健康剔除,/readyz//health 联动 503。新增 conn_max_idle_time/health_check_interval/health_check_failure_threshold 配置。

RequestID 默认装入(#24)

App.Init 无条件装入 RequestID()(Recovery 前),响应/panic 日志均带 request_id。移除 gin.Recovery() 双重保险。

升级说明 🛠️

  1. wire 包删除:移除 wire import 与 wire.InitServices()/WithWire() 调用。cache.Init() 现由 WithRedis 自动触发。
  2. AppConfig.TokenExpire 删除:改用 jwt.expire。grep 清理 token_expire
  3. JWTConfig.Expire 类型变更:YAML expire: 86400expire: "24h";代码 time.Duration(cfg.JWT.Expire) * time.Secondcfg.JWT.Expire
  4. StartServerWithPort / GracefulShutdown 删除:改用 App.Run() / App.Shutdown()
  5. JWT 密钥长度:Validate 要求启用 JWT 时 secret ≥32 字节,短密钥启动期被拦截。
  6. 配置文件jwt.expire 必须改为 Duration 字符串;server.read_timeout 等可选(缺省回退)。

升级命令go get github.com/EthanCodeCraft/xlgo-core@v1.1.0

完整变更见 CHANGELOG.md