企业网站制作官网,苏州网站建设自助建站模板,手机微信网站,百度首页的ip地址以下是一个基于 go-zero 框架的简单 RPC 服务示例#xff0c;该示例包括一个服务端和一个客户端通过 gRPC 进行通信。
服务端
1、定义 .proto 文件
在 rpc/add 目录下创建 adder.proto 文件#xff0c;定义 RPC 服务#xff1a;
syntax proto3;package add…以下是一个基于 go-zero 框架的简单 RPC 服务示例该示例包括一个服务端和一个客户端通过 gRPC 进行通信。
服务端
1、定义 .proto 文件
在 rpc/add 目录下创建 adder.proto 文件定义 RPC 服务
syntax proto3;package adder;service Adder {rpc Add(AddRequest) returns (AddResponse) {}
}message AddRequest {int32 a 1;int32 b 2;
}message AddResponse {int32 result 1;
}2、生成代码
使用 protoc 工具生成 Go 代码
protoc --go_outpluginsgrpc:. adder.proto3、实现服务
创建 adder_grpc.go 文件实现 Adder 服务
package adderimport (context
)type AdderServer struct{}func (s *AdderServer) Add(ctx context.Context, req *AddRequest) (*AddResponse, error) {result : req.GetA() req.GetB()return AddResponse{Result: result}, nil
}4、启动服务
创建 server.go 文件启动 gRPC 服务
package mainimport (flagfmtnetgithub.com/zeromicro/go-zero/core/confgithub.com/zeromicro/go-zero/core/logxgithub.com/zeromicro/go-zero/zrpcgithub.com/your/path/to/rpc/add
)var configFile flag.String(f, etc/config.yaml, the config file)func main() {flag.Parse()var c zrpc.RpcServerConfconf.MustLoad(*configFile, c)server : zrpc.MustNewServer(c)defer server.Stop()adderServer : add.AdderServer{}add.RegisterAdderServer(server.Server, adderServer)fmt.Printf(Starting rpc server on %s...\n, c.ListenOn)server.Start()
}5、配置文件
在 etc 目录下创建 config.yaml 文件配置服务地址和端口
Name: adder
ListenOn: 127.0.0.1:80806、启动服务端
运行 server.go 文件启动 RPC 服务
go run server.go客户端
1、创建客户端
创建 client.go 文件创建 gRPC 客户端
package mainimport (contextfmttimegithub.com/zeromicro/go-zero/zrpcgithub.com/your/path/to/rpc/add
)func main() {client : zrpc.MustNewClient(127.0.0.1:8080)defer client.Conn.Close()adderClient : add.NewAdderClient(client.Conn)ctx, cancel : context.WithTimeout(context.Background(), time.Second)defer cancel()req : add.AddRequest{A: 5,B: 7,}resp, err : adderClient.Add(ctx, req)if err ! nil {fmt.Println(Error:, err)} else {fmt.Println(Result:, resp.GetResult())}
}2、运行客户端
运行 client.go 文件调用 RPC 服务
go run client.go输出结果
Result: 12至此一个基于 go-zero 框架的简单 RPC 服务示例完成。