实现gRPC服务

本章将编写两个简单的 gRPC 服务,以便让它们通过 Consul 进行服务注册与发现。

服务介绍

  • Echo:回显客户端发送过来的消息
  • Calculate:简单的加减乘除计算服务

proto

echo.proto

syntax = "proto3";
package pb;

message EchoRequest { string message = 1; }
message EchoResponse {
  optional string prefix = 1;
  string message = 2;
}

service EchoSerivce { rpc Echo(EchoRequest) returns (EchoResponse); }

calculate.proto

syntax = "proto3";
package pb;

message CalculateRequest {
  int32 x = 1;
  int32 y = 2;
}
message CalculateRespone { int32 result = 1; }

service CalculateService {
  rpc Addition(CalculateRequest) returns (CalculateRespone);
  rpc Subtraction(CalculateRequest) returns (CalculateRespone);
  rpc Multiplication(CalculateRequest) returns (CalculateRespone);
  rpc Division(CalculateRequest) returns (CalculateRespone);
}

Rust 项目结构

本专题将以上两个 proto 分别拆分成 srv 和 web,为了简化操作,每个服务都通过 Cargo.toml[[bin]]来指定:

对应的 Cargo.toml 定义:

[[bin]]
name = "echo-srv"
path = "src/echo-srv.rs"

[[bin]]
name = "calc-srv"
path = "src/calc-srv.rs"

[[bin]]
name = "echo-web"
path = "src/echo-web.rs"

[[bin]]
name = "calc-web"

源码

要查看完整内容,请完成人机验证
升级为订阅用户,可关闭人机验证。