45个版本
0.13.0 | 2023年8月25日 |
---|---|
0.12.1 | 2023年2月14日 |
0.12.0 | 2022年11月4日 |
0.10.3 | 2022年6月28日 |
0.1.0 | 2017年7月27日 |
488 在 网络编程
8,646 每月下载量
用于 62 个crate(45个直接)
27MB
535K SLoC
gRPC-rs
gRPC-rs
是 gRPC Core 的Rust封装。 gRPC 是一个高性能、开源的通用RPC框架,优先考虑移动设备和HTTP/2。
状态
该项目仍在开发中。以下带有勾选标记的功能已支持
- 基本异步单/流调用
- SSL
- 泛型调用
- 连接级别压缩
- 互操作性测试
- QPS基准测试
- 自定义元数据
- 健康检查
- 反射
- 身份验证
- 负载均衡,客户端完全支持,服务器端负载报告尚未实现。
先决条件
- CMake >= 3.8.0
- Rust >= 1.36.0
- binutils >= 2.22
- 如果需要编译时生成绑定,LLVM和Clang >= 3.9。
对于Linux和MacOS,您还需要安装gcc 7.3+(或clang 6+)。
为x86_64/arm64 Linux预先生成了绑定。对于其他平台,绑定将在编译时生成。
对于Windows,您还需要安装以下软件
- Active State Perl
- yasm
- Visual Studio 2015+
构建
$ cargo xtask submodule # if you just cloned the repository
$ cargo build
链接OpenSSL出错
如果您在构建项目时使用 gRPC-rs
时遇到链接器错误,请参阅 openssl
功能部分以获取可能的解决方案。
用法
从proto文件生成源代码
选项1 - 手动生成
- 安装protobuf编译器
$ cargo install protobuf-codegen
- 安装gRPC编译器
$ cargo install grpcio-compiler
- 生成源代码
$ protoc --rust_out=. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_rust_plugin` example.proto
选项2 - 程序生成
可以通过使用protoc-grpcio,通过你的build.rs
文件以编程方式从proto文件生成Rust模块。
有关更多信息及示例,请参阅README。
要将此项目作为依赖项包含
[dependencies]
grpcio = "0.13"
功能 boringssl
boringssl
功能启用了对TLS加密和某些认证机制的支持。在不需要时,例如在内部网络中工作,您可以通过以下配置禁用它:
[dependencies]
grpcio = { version = "0.13", default-features = false, features = ["protobuf-codec"] }
功能 prost-codec
和 protobuf-codec
gRPC-rs
默认使用protobuf
crate。如果您想使用prost
,可以启用prost-codec
功能。您可能只想启用这两个功能中的一个。虽然grpcio同时启用这两个功能是可以的,但grpcio-compiler将无法按预期工作。
功能 openssl
和 openssl-vendored
gRPC-rs
自带gRPC Core
,默认使用BoringSSL而不是OpenSSL。这可能会由于符号冲突和/或缺失符号而导致链接问题,特别是当另一个依赖项使用OpenSSL时。为了解决这个问题,您可以在Cargo.toml
中为gprcio
指定"openssl"
,这要求openssl (>=1.0.2)。例如:
[dependencies]
grpcio = { version = "0.13", features = ["openssl"] }
openssl-vendored
与功能openssl
相同,但将从捆绑的源代码构建OpenSSL。
性能
请参阅benchmark以了解如何自行运行基准测试。
交叉编译
贡献
在发送PR之前,请确保格式化和测试代码。
如果grpc-sys/grpc的内容已更新,您可能需要重新生成绑定
$ cargo xtask bindgen
依赖项
~2–11MB
~124K SLoC