快速开始
概述
本文将介绍如何快速开发一个 rpc server 服务。
示例
准备工作
首先我们执行如下命令生成一个 proto 文件及其 pb 文件。
# 创建 demo 服务目录$ mkdir demo && cd demo# go mod 初始化$ go mod init demo# 生成 greet.proto 文件$ goctl rpc -o greet.proto# 生 pb.go 文件$ protoc greet.proto --go_out=. --go-grpc_out=.# 创建 server 目录$ mkdir server && cd server# 新增配置文件$ mkdir etc && cd etc$ touch greet-server.yaml# 新增 server.go 文件$ touch server.go
yaml 配置内容及 server.go 代码如下
- etc/greet-server.yaml
- server.go
Name: greet.rpcListenOn: 127.0.0.1:8080
func main() {var serverConf zrpc.RpcServerConfconf.MustLoad("etc/greet-server.yaml", &serverConf)s := zrpc.MustNewServer(serverConf, func(server *grpc.Server) {greet.RegisterGreetServer(server, &exampleServer{})})defer s.Stop()s.Start()}type exampleServer struct {greet.UnimplementedGreetServer}func (e *exampleServer) Ping(ctx context.Context, request *greet.Request) (*greet.Response, error) {// fill your logic herereturn &greet.Response{}, nil}
小技巧
如果你也觉得这样写代码很麻烦,不妨试试 goctl 脚手架代码生成,详情可参考 goctl rpc
更多 gRPC 使用(服务注册、服务发现、中间件使用等)可参考 rpc 服务示例