縮短從需求到上線的距離
go-zero 是一個集成了各種工程實踐的 web 和 rpc 框架。通過彈性設(shè)計保障了大并發(fā)服務(wù)端的穩(wěn)定性,經(jīng)受了充分的實戰(zhàn)檢驗。
go-zero 包含極簡的 API 定義和生成工具 goctl,可以根據(jù)定義的 api 文件一鍵生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代碼,并可直接運行。
使用 go-zero 的好處:
18 年初,我們決定從 ?Java+MongoDB
? 的單體架構(gòu)遷移到微服務(wù)架構(gòu),經(jīng)過仔細思考和對比,我們決定:
對于微服務(wù)框架的設(shè)計,我們期望保障微服務(wù)穩(wěn)定性的同時,也要特別注重研發(fā)效率。所以設(shè)計之初,我們就有如下一些準則:
我們經(jīng)歷不到半年時間,徹底完成了從 ?Java+MongoDB
? 到 ?Golang+MySQL
? 為主的微服務(wù)體系遷移,并于 18 年 8 月底完全上線,穩(wěn)定保障了業(yè)務(wù)后續(xù)迅速增長,確保了整個服務(wù)的高可用。
go-zero 是一個集成了各種工程實踐的包含 web 和 rpc 框架,有如下主要特點:
在項目目錄下通過如下命令安裝:
GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero
1、完整示例請查看
快速構(gòu)建高并發(fā)微服務(wù) - 多 RPC 版
2、安裝 goctl 工具
goctl 讀作 go control,不要讀成 go C-T-L。goctl 的意思是不要被代碼控制,而是要去控制它。其中的 go 不是指 golang。
GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero/tools/goctl
如果使用 go1.16 版本, 可以使用 ?go install
? 命令安裝
GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
確保 goctl 可執(zhí)行
3、快速生成 api 服務(wù)
goctl api new greet
cd greet
go mod init
go mod tidy
go run greet.go -f etc/greet-api.yaml
默認偵聽在 8888 端口(可以在配置文件里修改),可以通過 curl 請求:
curl -i http://localhost:8888/from/you
返回如下:
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 22 Oct 2020 14:03:18 GMT
Content-Length: 14
{"message":""}
編寫業(yè)務(wù)代碼:
servicecontext.go
? 里面?zhèn)鬟f依賴給 ?logic
?,比如 mysql, redis 等
get/post/put/delete
? 等請求對應(yīng)的 ?logic
?里增加業(yè)務(wù)處理邏輯4、可以根據(jù) api 文件生成前端需要的 Java, TypeScript, Dart, JavaScript 代碼
goctl api java -api greet.api -dir greet
goctl api dart -api greet.api -dir greet
...
更多建議: