go-zero
安装使用
创建项目
mkdir zero_service
cd zero_service
go mod init
GO111MODULE=on GOPROXY=https://goproxy.cn/,direct 安装go-zero:go get -u github.com/zeromicro/go-zero 安装goctl: go get -u github.com/zeromicro/go-zero/tools/goctl@latest 或者:go install github.com/zeromicro/go-zero/tools/goctl@latest ## 快速生成api服务 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创建单体服务
$ mkdir go-zero-demo
$ cd go-zero-demo
$ go mod init go-zero-demo
$ goctl api new greet
$ go mod tidy Done.
启动服务:cd greet
go run greet.go -f etc/greet-api.yaml
创建微服务
参考网址:https://legacy.go-zero.dev/cn/micro-service.html
创建项目
$ mkdir go-zero-demo
$ cd go-zero-demo
$ go mod init go-zero-demo
创建user rpc服务
$ mkdir -p mall/user/rpc
添加user.proto, 增加getUsr方法
syntax = “proto3”; package user; // protoc-gen-go 版本大于1.4.0, proto文件需要加上go_package,否则无法生成 option go_package = “./user”; message IdRequest { string id = 1; } message UserResponse { // 用户id string id = 1; // 用户名称 string name = 2; // 用户性别 string gender = 3; } service User {}
<font style="color:rgb(204, 153, 205);">rpc</font> <font style="color:rgb(240, 141, 73);">getUser</font><font style="color:rgb(204, 204, 204);">(</font><font style="color:rgb(248, 197, 85);">IdRequest</font><font style="color:rgb(204, 204, 204);">)</font> <font style="color:rgb(204, 153, 205);">returns</font><font style="color:rgb(204, 204, 204);">(</font><font style="color:rgb(248, 197, 85);">UserResponse</font><font style="color:rgb(204, 204, 204);">);</font>
生成代码:
$ cd mall/user/rpc
$ goctl rpc protoc user.proto —go_out=./types —go-grpc_out=./types —zrpc_out=.
Done.
创建order api服务
# 回到 go-zero-demo/mall 目录$ mkdir -p order/api && cd order/api
添加api文件:order.api
type(OrderReq {
Id string path:"id"
OrderReply {
Id string json:"id"
Name string json:"name"
service order {
@handler getOrder
get /api/order/get/:id (OrderReq) returns (OrderReply)
}生成order服务
$ goctl api go -api order.api -dir .
Done.
启动服务
启动etcd
etcd # 需要下载etcd
下载依赖
go mod tidy
启动user rpc
go run user.go -f etc/user.yaml
启动order api
go run order.go -f etc/user.yaml