sponge 是一個集成了自動生成代碼、web和微服務框架、基礎開發框架的golang生產力工具。sponge擁有豐富的生成代碼命令,生成不同的功能代碼可以組合成完整的服務(類似人為打散的海綿細胞可以自動重組成一個新的海綿)。代碼解耦模塊化設計,很容易構建出從開發到部署的完整工程項目,讓你開發web或微服務項目輕而易舉、事半功倍,golang也可以"低代碼開發"。
如果開發只有簡單CRUD api接口的web或微服務,不需要編寫一行golang代碼就可以編譯並部署到服務器、docker、k8s上,完整的服務代碼由sponge一鍵生成。
如果開發通用的web或微服務,除了定義數據表、在proto文件定義api接口、在生成的模板文件填寫具體業務邏輯代碼這三個部分需要人工編寫代碼,其他golang代碼都由sponge生成。
項目地址:https://github.com/zhufuyi/sponge
使用文檔:https://go-sponge.com/
生成代碼框架
sponge主要基於SQL和Protobuf兩種方式生成代碼,每種方式擁有生成不同功能代碼。
生成代碼的框架圖:
生成代碼框架對應的UI界面:
微服務框架
sponge生成的微服務代碼框架如下圖所示,這是典型的微服務分層結構,具有高性能,高擴展性,包含了常用的服務治理功能,可以很方便替換或添加自己的服務治理功能。
主要功能
sponge包含豐富的組件(按需使用):
- Web 框架 gin
- RPC 框架 grpc
- 配置解析 viper
- 配置中心 nacos
- 日誌 zap
- 數據庫組件 gorm
- 緩存組件 go-redis, ristretto]
- 自動化api接口文檔 swagger, protoc-gen-openapiv2
- 鑑權 jwt
- 校驗 validator
- 自適應限流
- 自適應熔斷
- 鏈路跟蹤 opentelemetry
- 監控 prometheu, grafana
- 服務註冊與發現 etcd, consul, nacos
- 自適應採集 profile
- 資源統計 gopsutil
- 代碼質量檢查 golangci-lint
- 持續集成部署 CICD jenkins, docker, kubernetes
目錄結構
生成的服務代碼目錄結構遵循 project-layout,代碼目錄結構如下所示:
.
├── api # proto文件和生成的*pb.go目錄
├── assets # 其他與資源庫一起使用的資產(圖片、logo等)目錄
├── cmd # 程序入口目錄
├── configs # 配置文件的目錄
├── deployments # IaaS、PaaS、系統和容器協調部署的配置和模板目錄
├── docs # 設計文檔和界面文檔目錄
├── internal # 私有應用程序和庫的代碼目錄
│ ├── cache # 基於業務包裝的緩存目錄
│ ├── config # Go結構的配置文件目錄
│ ├── dao # 數據訪問目錄
│ ├── ecode # 自定義業務錯誤代碼目錄
│ ├── handler # http的業務功能實現目錄
│ ├── model # 數據庫模型目錄
│ ├── routers # http路由目錄
│ ├── rpcclient # 連接grpc服務的客户端目錄
│ ├── server # 服務入口,包括http、grpc等
│ ├── service # grpc的業務功能實現目錄
│ └── types # http的請求和響應類型目錄
├── pkg # 外部應用程序可以使用的庫目錄
├── scripts # 用於執行各種構建、安裝、分析等操作的腳本目錄
├── test # 額外的外部測試程序和測試數據
└── third_party # 外部幫助程序、分叉代碼和其他第三方工具
完整的服務代碼的雞蛋模型
sponge生成代碼過程中剝離了業務邏輯與非業務邏輯兩大部分代碼。例如把一個完整web服務代碼看作一個雞蛋,蛋殼表示web服務框架代碼,蛋白和蛋黃都表示業務邏輯代碼,蛋黃是業務邏輯的核心(需要人工編寫的代碼),例如定義mysql表、定義api接口、編寫具體邏輯代碼都屬於蛋黃部分。蛋白是業務邏輯核心代碼與web框架代碼連接的橋樑(自動生成,不需要人工編寫),例如根據proto文件生成的註冊路由代碼、handler方法函數代碼、參數校驗代碼、錯誤碼、swagger文檔等都屬於蛋白部分。
⓷基於protobuf創建的web服務代碼的雞蛋模型剖析圖:
這是web服務代碼雞蛋模型,還有微服務(grpc)代碼、grpc網關服務代碼的雞蛋模型在sponge文檔中有介紹。
快速開始
安裝sponge:
支持在windows、mac、linux環境下安裝sponge,點擊查看安裝説明。
安裝完成sponge後,啓動UI服務:
sponge run
在瀏覽器訪問 http://localhost:24631,在UI頁面上操作生成代碼。
使用示例
簡單示例
不包含具體業務邏輯代碼。
- 1_web-gin-CRUD
- 2_micro-grpc-CRUD
- 3_web-gin-protobuf
- 4_micro-grpc-protobuf
- 5_micro-gin-rpc-gateway
- 6_micro-cluster-demo
完整項目示例
- 7_community-single
- 8_community-cluster