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 {
  1. <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