域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

实现gRPC服务

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

服务介绍

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

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); }

Rust 项目结构

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

  • echo-srv:Echo 的 gRPC 服务
  • echo-web:Echo 的 Web 服务,调用 echo-srv
  • calc-srv:Calculate 的 gPRC 服务
  • calc-web:Calculate 的 Web 服务,调用 calc-srv

对应的 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"

源码

由于代码非常简单,请自行在源码仓库查看。

要查看完整内容,请先登录