Rust 网络编程之 gRPC 与 Tonic 框架

介绍

gRPC

gRPC 是由 google 开发,是一款语言中立、平台中立、开源的远程过程调用 (RPC) 系统。通过 gRPC,客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,能够让用户更容易地创建分布式应用和服务。

gRPC 基本原理为:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。

tonic 是rust中的一个 GRPC 客户端和服务端的异步实现,底层使用了tokio 的prost 生成Protocol Buffers对应的代码;

protocol buffers

gRPC 默认使用 protocol buffers,它是 Google 开源的一套成熟的结构数据序列化机制。

Rust Tonic

tonic是基于HTTP/2的gRPC实现,专注于高性能,互通性和灵活性;

创建该库的目的是为了对async/await具有一流的支持,并充当用Rust编写的生产系统的核心构建块;
特性:

  • 双向流传输
  • 高性能异步io
  • 互通性
  • 通过rustls进行TLS加密支持
  • 负载均衡
  • 自定义元数据
  • 身份认证
  • 健康检查
  • ……

编译 Protobuf 还是需要安装 protoc 的,可以参考官方文档

服务定义

示例

示例来自官方文档:

service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  required string greeting = 1;
}

message HelloResponse {
  required string reply = 1;
}

在上述例子中,定义一个服务,指定其可以被远程调用的方法及其参数和返回类型。在定义的消息类型中,定义了字段,后面的数字表示字段对应的唯一的数字标识,这些标识用来在消息的二进制格式中识别的字段,并且一旦消息投入使用,这些标识就不应该再被修改。

定义方法

gRPC 允许定义 四类服务方法

  • 单项 RPC,即客户端发送一个请求给服务端,从服务端获取一个应答,就像一次普通的函数调用。

                
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smilejiasmile

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值