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,即客户端发送一个请求给服务端,从服务端获取一个应答,就像一次普通的函数调用。

 

                

相关推荐

  1. Rust 网络编程 gRPC Tonic 框架

    2024-04-26 07:36:07       30 阅读
  2. gRPCgRPC Middleware

    2024-04-26 07:36:07       45 阅读
  3. GO EASY 游戏框架 GRPC 扩展篇 04

    2024-04-26 07:36:07       51 阅读
  4. 网络编程Socket

    2024-04-26 07:36:07       59 阅读
  5. gRPCgrpcurl

    2024-04-26 07:36:07       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 07:36:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 07:36:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 07:36:07       87 阅读
  4. Python语言-面向对象

    2024-04-26 07:36:07       96 阅读

热门阅读

  1. 【漏洞复现】SpringBlade dict-biz SQL注入漏洞

    2024-04-26 07:36:07       38 阅读
  2. Ribbon饥饿模式

    2024-04-26 07:36:07       27 阅读
  3. c语言里的位域

    2024-04-26 07:36:07       27 阅读
  4. 【C语言】typedef

    2024-04-26 07:36:07       31 阅读
  5. golang上传文件到ftp服务器

    2024-04-26 07:36:07       45 阅读
  6. 【计算机系统】

    2024-04-26 07:36:07       28 阅读
  7. 前端网络---网络安全

    2024-04-26 07:36:07       33 阅读
  8. Swift中TableView的编辑模式

    2024-04-26 07:36:07       31 阅读