v3.0 Production Ready · 基于 Gin 构建

The Go framework
built for serious systems.

ThinkGin 基于 Gin 构建,把配置、日志、监控、链路追踪与优雅停机收进一套统一秩序。性能是门槛,秩序才是护城河。

go run main.go  ·  Listening on :8000
~/thinkgin — zsh
$go run main.go
[GIN-debug] GET / --> thinkgin/app/index/controller.Hello [GIN-debug] GET /index/hello --> thinkgin/app/index/controller.Hello [GIN-debug] GET /metrics --> prometheus.Handler [GIN-debug] GET /livez --> kubernetes.Probe [GIN-debug] GET /readyz --> kubernetes.Probe framework initialized · shutdown timeout = 10s Listening and serving HTTP on :8000
$
Version
3.0
持续演进的企业级代际
Runtime
Go 1.18+
现代 Go 模块化开发
Config
YAML
模块化配置,多环境部署
Shutdown
10s
优雅停机超时,面向生产

性能之外,真正让系统可维护的能力。

一个框架是否值得投入,不在它能不能跑 benchmark,而在它能不能在三年后依然被团队维护、被 SRE 监控、被新人看懂。

Gin-powered 路由

保留 Gin 的高性能 HTTP 路由,并在其上建立统一的中间件、上下文与生命周期模型。

模块化 YAML 配置

app / server / database / log / prometheus 各司其职,不再把设置挤进同一个巨大的配置文件。

结构化日志

基于 Logrus 的 JSON / Text 双格式输出,字段化记录、自动切割、按环境差异化配置。

Prometheus 监控

HTTP 指标、系统指标、业务指标三件套,scope / route 标签让 label 不会爆炸。

分布式追踪

Jaeger / Zipkin / OpenTelemetry 原生集成,跨服务链路一目了然。

优雅停机 & 探针

默认 10s 优雅停机超时,配合 k8s livez / readyz 探针,生产发布不再踩坑。

从请求进入,到服务退出,链路始终可解释。

Route 负责入口,Middleware 处理横切,Controller 保持轻薄,业务沉在 Model / Service。外层由配置和可观测性统一治理。

分层,是为了让秩序被看见。

不是纸面架构,而是真正把关注点分开:每一层都能被独立替换、独立测试、独立观测。

Router Middleware Controller Model Prometheus Graceful Shutdown
01
HTTP Request → Router

请求进入 Gin 路由层,完成路径匹配与上下文构建。

entry
02
Middleware

处理日志、安全、限流、追踪等横切关注点。

cross
03
Controller → Model

控制器保持轻薄,业务与数据访问沉淀到服务层。

core
04
Response → Graceful Shutdown

统一输出响应,借助上下文与超时完成优雅退出。

exit
thinkgin / main.go Real Entry
// 真实的服务启动入口
config := app.GetConfig()
logger := app.GetLogger()

appInstance, err := framework.New(
    framework.WithConfig(config),
    framework.WithLogger(logger),
    framework.WithShutdownTimeout(10*time.Second),
)
if err != nil {
    logger.Fatalf("应用初始化失败: %v", err)
}

if err := appInstance.Run(ctx); err != nil {
    logger.Fatalf("服务运行失败: %v", err)
}

准备好把它用在你的下一个生产服务里。

十秒上手示例、模块化配置、监控与部署方案,一份文档让你看见 ThinkGin 如何被设计、被组装、被交付到线上。