gRPC 服务端开发
go-zero 在标准 gRPC 服务端之上封装了弹性治理、服务注册和链路追踪能力。
定义 Proto
Section titled “定义 Proto”syntax = "proto3";package greeter;option go_package = "./greeter";
message SayHelloReq { string name = 1; }message SayHelloResp { string message = 1; }
service Greeter { rpc SayHello(SayHelloReq) returns(SayHelloResp);}goctl rpc protoc greeter.proto --go_out=. --go-grpc_out=. --zrpc_out=.生成的目录结构:
greeter/├── etc/greeter.yaml├── internal/│ ├── config/config.go│ ├── logic/sayhellologic.go│ ├── server/greeterserver.go│ └── svc/servicecontext.go├── greeter/ # protobuf 生成文件└── greeter.go实现业务逻辑
Section titled “实现业务逻辑”func (l *SayHelloLogic) SayHello(in *greeter.SayHelloReq) (*greeter.SayHelloResp, error) { return &greeter.SayHelloResp{Message: "Hello " + in.Name}, nil}Name: greeter.rpcListenOn: 0.0.0.0:8080Etcd: Hosts: [127.0.0.1:2379] Key: greeter.rpcgo run greeter.go