什么是 Bingo
Bingo 是一个生产级的 Go 中后台脚手架,提供了完整的微服务架构、核心组件和最佳实践,帮助团队快速搭建可扩展的后端服务。
项目定位
一个开箱即用的 Go 语言中后台脚手架,基于微服务架构设计,让开发者只需关注业务开发。
设计理念
- 开箱即用:内置完整的技术栈和核心组件,快速启动项目
- 业务聚焦:脚手架处理技术细节,开发者专注业务逻辑
- 灵活可扩展:模块化设计,可根据需求自由组合或移除
- 生产就绪:包含监控、日志、链路追踪等生产环境必备功能
- 最佳实践:遵循 Go 社区最佳实践和设计模式
核心特性
架构层面
- 微服务架构:多服务独立部署,支持水平扩展
- 分层设计:Controller → Biz → Store 清晰的三层架构
- 依赖注入:基于接口编程,易于测试和扩展
- 服务发现:支持 gRPC 服务间通信
技术组件
- Web 框架:Gin,高性能 HTTP 框架
- ORM:GORM,支持多种数据库
- 缓存:Redis 集成,支持分布式缓存
- 任务队列:Asynq,可靠的异步任务处理
- 权限控制:Casbin,灵活的 RBAC 权限引擎
- 配置管理:Viper,支持多种配置格式
- 日志系统:Zap,结构化高性能日志
- API 文档:Swagger,自动生成 API 文档
工程能力
- CLI 工具:bingoctl - 快速创建项目和生成代码
- 热重启:Air 支持开发时热重启
- 代码生成:自动生成 CRUD 代码和 API 文档
- Docker 支持:一键容器化部署
- 监控指标:Prometheus + pprof 性能监控
- 单元测试:完整的测试框架和示例
内置示例功能
脚手架内置了一些基础功能作为开发参考,这些功能是可选的,可以根据实际需求保留或移除:
- 用户认证:JWT、OAuth、Web3 等多种认证方式示例
- 权限管理:基于 RBAC 的权限控制示例
- 应用管理:多应用和 API Key 管理示例
- 机器人服务:Discord/Telegram Bot 集成示例
- 定时任务:基于 Asynq 的任务调度示例
这些内置功能主要用于:
- 展示脚手架的使用方式和最佳实践
- 提供可复用的代码模板
- 作为业务开发的起点
提示:你可以参考这些示例快速开发自己的业务功能,也可以直接删除不需要的模块。
技术栈
核心框架
- Go: 1.23.1+
- Web 框架: Gin v1.10.0
- ORM: GORM v1.25.10
- 数据库: MySQL 5.7+ / PostgreSQL(可选)
- 缓存: Redis 6.0+
- gRPC: google.golang.org/grpc v1.64.0
- 任务队列: Asynq v0.24.1
工具库
- 日志: Zap v1.27.0
- 权限: Casbin v2.89.0
- JWT: golang-jwt/jwt v4.5.0
- 配置: Viper v1.18.2
- CLI: Cobra v1.8.0
- 验证: validator v10+
- 工具集: Lancet v2.3.2
系统要求
- Go 1.23.1+
- MySQL 5.7+ 或 PostgreSQL
- Redis 6.0+
- Docker & Docker Compose(可选)
下一步
- 快速开始 - 10 分钟快速启动项目