38个版本
0.13.0+1.56.2-patched | 2023年8月25日 |
---|---|
0.12.1+1.46.5-patched | 2023年2月14日 |
0.12.0+1.46.5-patched | 2022年11月4日 |
0.10.3+1.44.0-patched | 2022年6月28日 |
0.1.0 | 2017年7月27日 |
#30 在 #rpc-framework
9,844 每月下载量
用于 grpcio
26MB
530K SLoC
包含(JAR文件,55KB)gradle-wrapper.jar,(模糊的autoconf代码,25KB)configure.ac,(模糊的autoconf代码,1KB)configure.ac
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 - 程序化生成
程序化生成可以用于通过您的 build.rs
从 proto 文件生成 Rust 模块,使用 protoc-grpcio。
更多信息和示例请参阅 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。为了解决这个问题,您可以指定 "openssl"
在您的 Cargo.toml
的 gprcio
功能列表中,这需要 openssl (> =1.0.2)。例如。
[dependencies]
grpcio = { version = "0.13", features = ["openssl"] }
功能 openssl-vendored
与功能 openssl
相同,但它将从捆绑的源代码构建 openssl。
性能
请参阅 基准测试 了解如何自行运行基准测试。
交叉编译
请参阅 交叉编译
贡献
在发送 PR 之前,请确保格式化和测试代码。
如果 grpc-sys/grpc 中的内容已更新,您可能需要重新生成绑定
$ cargo xtask bindgen
依赖项
~0.8–4.5MB
~85K SLoC