快速开始

概述

本文将介绍如何快速开发一个 rpc server 服务。

示例

准备工作

事先我们执行如下执行生成一个 proto 文件及其 pb 文件。

  1. # 创建 demo 服务目录
  2. $ mkdir demo && cd demo
  3. # go mod 初始化
  4. $ go mod init demo
  5. # 生成 greet.proto 文件
  6. $ goctl rpc -o greet.proto
  7. # 生 pb.go 文件
  8. $ protoc greet.proto --go_out=. --go-grpc_out=.
  9. # 创建 client 目录
  10. $ mkdir server && cd server
  11. # 新增配置文件
  12. $ mkdir etc && cd etc
  13. $ touch greet-server.yaml
  14. # 新增 client.go 文件
  15. $ touch server.go

yaml 配置内容及 server.go 代码如下

  • etc/greet-server.yaml
  • server.go
  1. Name: greet.rpc
  2. ListenOn: 127.0.0.1:8080
  1. func main() {
  2. func main() {
  3. var serverConf zrpc.RpcServerConf
  4. conf.MustLoad("etc/greet-server.yaml", &serverConf)
  5. s := zrpc.MustNewServer(serverConf, func(server *grpc.Server) {
  6. greet.RegisterGreetServer(server, &exampleServer{})
  7. })
  8. defer s.Stop()
  9. s.Start()
  10. }
  11. }
  12. type exampleServer struct {
  13. greet.UnimplementedGreetServer
  14. }
  15. func (e *exampleServer) Ping(ctx context.Context, request *greet.Request) (*greet.Response, error) {
  16. // fill your logic here
  17. return &greet.Response{}, nil
  18. }
快速开始 - 图1小技巧

如果你也觉得这样写代码很麻烦,不妨试试 goctl 脚手架代码生成,详情可参考 goctl rpc

更多 gRPC 使用(服务注册、服务发现、中间件使用等)可参考 rpc 服务注册

参考文献