Skip to content

什么是 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 的任务调度示例

这些内置功能主要用于:

  1. 展示脚手架的使用方式和最佳实践
  2. 提供可复用的代码模板
  3. 作为业务开发的起点

提示:你可以参考这些示例快速开发自己的业务功能,也可以直接删除不需要的模块。

技术栈

核心框架

  • 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(可选)

下一步

Released under the Apache 2.0 License.