chain-service
0、安装依赖
安装 protobuf golang 扩展,用于生成 go 文件:
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc \
1.创建项目目录和 proto 文件
见示例:./proto/chain.proto:
2.生成服务端基础代码
make gen-code
*注意:goctl rpc 工具一次只能读取一个 proto 文件,不要用 .proto(如果有多个 proto 文件,go-zero 的 cli flag 会识别成多个文件参数,报错了)。
例如 chain.proto 文件中 import 了 base.proto,go-zero 与原生 protoc 生成 grpc 方式对比:
- go-zero:
goctl rpc protoc --go_out=./internal/types --go-grpc_out=./internal/types --zrpc_out=. ./proto/base.proto
goctl rpc protoc --go_out=./internal/types --go-grpc_out=./internal/types --zrpc_out=. ./proto/chain.proto
- 原生 protoc:
protoc --go_out=./internal/types --go-grpc_out=./internal/types ./proto/*.proto
一些参数含义如下:
go_out:原生 protoc 的参数,表示生成的 pb go 文件所在路径
go-grpc_out:原生 protoc 的参数,表示生成的 grpc service 文件所在路径
zrpc_out:go-zero 的参数,表示 internal、etc 等基础代码文件的路径,一般默认是 .
3.填充业务逻辑(todo 部分)
4.生成 tls 证书
make gen-cert
5.启动 key-service 服务
- go-zero rpc 基础代码生成时,默认会生成 etcd 配置,如果不需要 etcd 组件,将如下 Etcd 项删除
Name: key.rpc
ListenOn: 0.0.0.0:8080
# -------删除------------
Etcd:
Hosts:
- 127.0.0.1:2379
Key: key.rpc
# -------删除------------
- 启动服务
make start-service
6、编译打包 docker 镜像
make build-docker