#grpc #http2 #tls #rpc #protobuf

ekiden-grpcio

基于gRPC C核心库的Rust语言实现

1 个不稳定版本

使用旧的Rust 2015

0.3.2 2018年7月14日
0.3.1 2018年7月14日
0.3.0 2018年7月13日

#37 in #http2

Apache-2.0

25MB
553K SLoC

C 236K SLoC // 0.2% comments C++ 124K SLoC // 0.2% comments Perl 58K SLoC // 0.1% comments C# 28K SLoC // 0.2% comments Go 25K SLoC // 0.1% comments Python 24K SLoC // 0.2% comments Visual Studio Project 18K SLoC GNU Style Assembly 10K SLoC // 0.1% comments M4 9K SLoC // 0.2% comments Bazel 5K SLoC // 0.1% comments Rust 4.5K SLoC // 0.1% comments Shell 4K SLoC // 0.5% comments Ada 1.5K SLoC // 0.2% comments Assembly 1.5K SLoC // 0.2% comments Visual Studio Solution 1K SLoC Pascal 1K SLoC // 0.2% comments Bitbake 861 SLoC // 0.0% comments Automake 838 SLoC // 0.2% comments Forge Config 672 SLoC // 0.6% comments Scons 578 SLoC // 0.2% comments Batch 498 SLoC // 0.0% comments SQL 87 SLoC Xcode Config 65 SLoC // 0.7% comments Ruby 38 SLoC // 0.5% comments JavaScript 18 SLoC // 0.5% comments AWK 17 SLoC // 0.3% comments NuGet Config 17 SLoC PHP 9 SLoC // 0.6% comments Cython 7 SLoC // 0.6% comments D 5 SLoC

gRPC-rs

gRPC-rs 是gRPC核心的Rust包装器。 gRPC 是一个高性能、开源的通用RPC框架,优先考虑移动设备和HTTP/2。

Crates.io docs.rs Build Status Build status

状态

该项目仍在开发中。以下带有勾选标记的功能受支持

  • 基本的异步单例/流式调用
  • SSL
  • 泛型调用
  • 连接级别压缩
  • 互操作性测试
  • QPS基准测试
  • 自定义元数据
  • 健康检查
  • 反射
  • 身份验证
  • 负载均衡

先决条件

  • CMake >= 3.8.0
  • Rust >= 1.19.0
  • 如果您想启用安全功能,需要Go (>=1.7)。

对于Linux和MacOS,您还需要安装gcc(或clang)。

对于Windows,您还需要安装以下软件

  • Active State Perl
  • yasm
  • Visual Studio 2015+

构建

$ cargo build

用法

从proto文件生成源代码

选项1 - 手动生成

  1. 安装protobuf编译器
$ cargo install protobuf-codegen
  1. 安装gRPC编译器
$ cargo install grpcio-compiler
  1. 生成源代码
$ 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.3"

功能 secure

secure 功能启用对TLS加密和一些身份验证机制的支持。当您不需要它时,例如在内部网络中工作时,您可以通过以下配置禁用它

[dependencies]
grpcio = { version = "0.3", default-features = false, features = ["protobuf-codec"] }

性能

有关如何自行运行基准测试的信息,请参阅 基准测试

依赖关系