Skip to content

Latest commit

 

History

History
250 lines (180 loc) · 16.2 KB

readme-cn.md

File metadata and controls

250 lines (180 loc) · 16.2 KB

English | 简体中文


sponge 是一个强大的 Go 开发框架,其核心理念是通过解析 SQLProtobufJSON 文件逆向生成模块化的代码,这些模块化代码可以灵活、无缝地组合成多种类型的完整后端服务(类似海绵细胞的特性,打散的海绵细胞能自动重新组合成新的海绵)。sponge 提供一站式项目开发解决方案,拥有出色的项目工程化能力,涵盖代码生成、开发、测试、API 文档生成和部署,大幅提升开发效率,降低开发难度,实现以"低代码"方式构建高质量项目。


适用场景

sponge 适用于快速开发各种高性能后端服务,包括但不限于:

  • Web 服务 (gin);
  • gRPC 服务;
  • HTTP+gRPC 混合服务;
  • gRPC Gateway API 服务;
  • 云原生微服务;

此外,开发者还可以通过自定义模板,生成满足业务需求的各类代码。


核心亮点

  1. 一键生成完整后端服务代码
    对于仅需 CRUD APIWebgRPC 服务,无需编写任何 Go 代码。只需连接数据库(如 MySQLMongoDBPostgreSQLSQLite),即可一键生成完整后端服务代码,并轻松部署到 Linux 服务器、Docker 或 Kubernetes 上。

  2. 高效开发通用服务
    开发通用的 WebgRPCHTTP+gRPCgRPC Gateway 服务,只需专注于以下三部分:

    • 数据库表的定义;
    • 在 Protobuf 文件中定义 API 描述信息;
    • 在生成的模板中编写业务逻辑代码。

    服务的框架代码和 CRUD API 代码均由 sponge 自动生成。

  3. 支持自定义模板,灵活扩展
    sponge 支持通过自定义模板生成项目所需的多种代码类型,不局限于 Go 语言。例如:

    • 后端代码;
    • 前端代码;
    • 配置文件;
    • 测试代码;
    • 构建和部署脚本等。
  4. 在页面生成代码,简单易用
    sponge 提供在页面生成代码,比使用命令行更加简单易用,只需在页面上填写相关参数,即可一键生成代码。

  5. AI 助手生成业务逻辑实现代码
    sponge 内置了AI助手(DeepSeek 或 ChatGPT),两者优势互补,形成一套完整的高效开发解决方案:

    • Sponge:负责基础设施代码生成(服务框架、CRUD API 接口、缺少业务逻辑实现的自定义 API 接口等)。
    • DeepSeek 或 ChatGPT:专注业务逻辑实现(表结构 DDL 设计、自定义 API 接口定义、业务逻辑实现代码)。

快速开始

  1. 安装 sponge

    支持在 windows、mac、linux 环境下安装 sponge,点击查看 安装 sponge 说明

  2. 打开生成代码 UI 页面

    安装完成后,执行命令打开 sponge UI 页面:

    sponge run

    在本地浏览器访问 http://localhost:24631,在页面上操作生成代码,如下图所示:

    如果想要在跨主机的浏览器上访问,启动UI时需要指定宿主机ip或域名,示例 sponge run -a http://your_host_ip:24631。 也可以在 docker 上启动UI服务来支持跨主机访问,点击查看 在 docker 运行 sponge UI 服务说明


主要功能

sponge 内置了丰富的功能或组件(按需使用):

功能或组件 使用示例
Web 框架 gin gin 示例
gin 中间件示例
RPC 框架 gRPC gRPC 示例
gRPC 拦截器示例
配置解析 viper 示例
日志 zap 示例
ORM 框架 gorm, mongo-go-driver gorm 示例
mongodb 示例
缓存 go-redis, ristretto go-redis 示例
ristretto 示例
自动化api文档 swagger, protoc-gen-openapiv2 -
鉴权 jwt 示例
校验 validator, protoc-gen-validate validator 示例
protoc-gen-validate 示例
Websocket gorilla/websocket 示例
定时任务 cron 示例
消息队列 rabbitmq, kafka rabbitmq 示例
kafka 示例
分布式事务管理器 dtm 示例
分布式锁 dlock 示例
自适应限流 ratelimit 示例
自适应熔断 circuitbreaker 示例
链路跟踪 opentelemetry 示例
跨服务链路跟踪示例
监控 prometheus, grafana gin 示例
gRPC 示例
web和gRPC监控示例
服务注册与发现 etcd, consul, nacos 服务注册示例
服务发现示例
自适应采集 profile 示例
资源统计 gopsutil 示例
配置中心 nacos 示例
代码质量检查 golangci-lint -
持续集成部署 CI/CD kubernetes, docker, jenkins 示例
生成项目业务架构图 spograph 示例
生成自定义代码 go template json 示例
sql 示例
protobuf 示例
AI助手 deepseek, chatgpt 示例

生成代码的框架

sponge 支持基于自带模板和自定义模板两种方式生成你的项目所需的代码,下面是两种生成代码的框架图。

  1. sponge 基于自带模板生成代码框架如下图所示,支持 sql 和 protobuf 两种方式。


  1. sponge 基于自定义模板生成代码框架如下图所示,支持 json、sql、protobuf 三种方式。


微服务框架

sponge 创建的 6 种类型的后端服务中有 5 种属于微服务架构。下图展示了典型的微服务分层结构,具备高性能、高扩展性,并内置常用的服务治理功能。


创建的http和grpc服务代码的性能测试: 50个并发,总共100万个请求。

http-server

grpc-server

点击查看测试代码


目录结构

sponge 创建的服务代码目录结构遵循 project-layout

sponge 支持创建 单体应用单体仓库(monolith)微服务多仓库(multi-repo)微服务单体仓库(mono-repo)三种类型的项目代码结构。

  1. 创建单体应用单体仓库(monolith)微服务多仓库(multi-repo)代码目录结构如下:
   .
   ├── api            # protobuf文件和生成的*pb.go目录
   ├── assets         # 其他与资源库一起使用的资产(图片、logo等)目录
   ├── cmd            # 程序入口目录
   ├── configs        # 配置文件的目录
   ├── deployments    # 裸机、docker、k8s部署脚本目录
   ├── docs           # 设计文档和界面文档目录
   ├── internal       # 业务逻辑代码目录
   │    ├── cache        # 基于业务包装的缓存目录
   │    ├── config       # Go结构的配置文件目录
   │    ├── dao          # 数据访问目录
   │    ├── database     # 数据库目录
   │    ├── ecode        # 自定义业务错误代码目录
   │    ├── handler      # http的业务功能实现目录
   │    ├── model        # 数据库模型目录
   │    ├── routers      # http路由目录
   │    ├── rpcclient    # 连接grpc服务的客户端目录
   │    ├── server       # 服务入口,包括http、grpc等
   │    ├── service      # grpc的业务功能实现目录
   │    └── types        # http的请求和响应类型目录
   ├── pkg            # 外部应用程序可以使用的库目录
   ├── scripts        # 执行脚本目录
   ├── test           # 额外的外部测试程序和测试数据
   ├── third_party    # 依赖第三方protobuf文件或其他工具的目录
   ├── Makefile       # 开发、测试、部署相关的命令集合
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验文件

  1. 创建微服务单体仓库(mono-repo)代码目录结构(大仓库代码目录结构)如下:
   .
   ├── api
   │    ├── server1       # 服务1的protobuf文件和生成的*pb.go目录
   │    ├── server2       # 服务2的protobuf文件和生成的*pb.go目录
   │    ├── server3       # 服务3的protobuf文件和生成的*pb.go目录
   │    └── ...
   ├── server1        # 服务1的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── server2        # 服务2的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── server3        # 服务3的代码目录,与微服务多仓库(multi-repo)目录结构基本一样
   ├── ...
   ├── third_party    # 依赖的第三方protobuf文件
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验和文件

sponge 开发文档

点击查看 sponge 开发项目的详细文档,包括代码生成、开发、配置、部署说明等。


使用示例

使用 sponge 创建服务示例

使用 sponge 开发完整项目示例

分布式事务示例

sponge+AI 助手协同开发示例



如果对您有帮助给个star⭐,欢迎加入go sponge微信群交流,加微信(备注sponge)进群。