gRPC 서버
go-zero wraps 표준 gRPC 서버 사용하여 탄력성, 서비스 registration,과 추적 built 에서.
Define Proto
섹션 제목: “Define 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 generated└── greeter.go로직 구현
섹션 제목: “로직 구현”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