基于 Go 语言的高性能 HTTP Web 框架,API 风格类似 Martini,适用于 REST API、Web 应用和微服务。
evrone/go-clean-template
一个 Go 服务的 Clean Architecture 项目模板,展示如何组织 REST、gRPC 及消息 RPC 等多种传输层的代码。
- Star
- 7,708
- Fork
- 665
- 未关闭 Issue
- 3
- 最近提交
- 11天前
这是什么?
go-clean-template 是一个遵循 Clean Architecture 原则的 Go 微服务模板。它把业务逻辑与数据库、Web 框架、消息中间件等基础设施分离,核心用例只依赖接口和标准库,便于服务随规模增长时保持结构清晰。
模板内置用户认证(JWT)、任务管理(含状态流转)和文本翻译(含历史记录)三个示例领域,每个领域都通过四种传输方式暴露:基于 Fiber 的 REST API、gRPC,以及基于 RabbitMQ(AMQP)和 NATS 的 RPC。依赖注入通过 New 构造函数完成,仓库还提供 Postgres、RabbitMQ、NATS、Jaeger 的 Docker Compose 配置。
项目同时包含 OpenTelemetry 链路追踪(跨四种传输传播上下文)、Prometheus 指标、Swagger 文档、集成测试和数据库迁移。
核心功能
- 01通过 New 构造函数实现依赖注入的 Clean Architecture 分层
- 02基于 Fiber 的 REST API,并用 swag 生成 Swagger 文档
- 03使用 protobuf 定义的 gRPC 服务
- 04基于 RabbitMQ(AMQP)和 NATS 的请求-应答 RPC 服务
- 05OpenTelemetry 链路追踪与 Prometheus 指标
- 06包含 Postgres、RabbitMQ、NATS 和 Jaeger 的 Docker Compose 环境
适用场景
- 以统一的项目结构快速启动新的 Go 微服务
- 学习如何在 Go 项目中将业务逻辑与传输层、存储层分离
- 构建需要通过 REST、gRPC 和消息队列提供相同业务能力的服务
快速上手
- 1
使用 Docker Compose 启动 Postgres、RabbitMQ 和 NATS
make compose-up - 2
运行应用并执行数据库迁移
make run
使用前须知
- 本地开发需要 Docker Compose 来运行 Postgres、RabbitMQ 和 NATS。
标签
常见问题
- go-clean-template 是什么?
- 一个 Go 服务的 Clean Architecture 项目模板,展示如何组织 REST、gRPC 及消息 RPC 等多种传输层的代码。 go-clean-template 是一个遵循 Clean Architecture 原则的 Go 微服务模板。它把业务逻辑与数据库、Web 框架、消息中间件等基础设施分离,核心用例只依赖接口和标准库,便于服务随规模增长时保持结构清晰。
- go-clean-template 可以免费使用吗?用的什么许可证?
- go-clean-template 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- go-clean-template 还在维护吗?
- 活跃维护中。go-clean-template 最近一次提交是在 2026年10月11日。
- go-clean-template 适合用来做什么?
- 以统一的项目结构快速启动新的 Go 微服务 学习如何在 Go 项目中将业务逻辑与传输层、存储层分离 构建需要通过 REST、gRPC 和消息队列提供相同业务能力的服务
- go-clean-template 怎么安装和运行?
- 使用 Docker Compose 启动 Postgres、RabbitMQ 和 NATS: make compose-up 运行应用并执行数据库迁移: make run
- 在哪里获取 go-clean-template?
- 源代码和安装说明在 GitHub 上:https://github.com/evrone/go-clean-template
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
GoWA 是用 Go 编写的自托管 WhatsApp REST API,支持多账号、Webhook、MCP 和 Chatwoot 集成。
Go 语言实现的以太坊执行层客户端,可运行全节点或归档节点,并提供 JSON-RPC 接口。
基于 Caddy 构建的现代 PHP 应用服务器,支持 worker 模式、Early Hints 与 HTTP/3。
用 Go 编写的高性能、无状态、声明式 API 网关,用于路由、聚合和保护对后端微服务的调用。