grpc/grpc-rust

GitHub: grpc/grpc-rust

一个基于 Rust 的高性能 gRPC 框架,提供原生 async/await 支持的客户端与服务端实现。

Stars: 12377 | Forks: 1234

![](https://github.com/hyperium/tonic/raw/master/.github/assets/tonic-banner.svg?sanitize=true) [gRPC] 的 Rust 实现,这是一个高性能、开源、通用的 RPC 框架,优先考虑移动端和 HTTP/2。 [`tonic`] 是一个基于 HTTP/2 的 gRPC 实现,专注于高性能、互操作性和灵活性。创建这个库是为了对 async/await 提供一流的支持,并作为用 Rust 编写的生产系统的核心构建块。 [![Crates.io](https://img.shields.io/crates/v/tonic)](https://crates.io/crates/tonic) [![Documentation](https://docs.rs/tonic/badge.svg)](https://docs.rs/tonic) [![Crates.io](https://img.shields.io/crates/l/tonic)](LICENSE) [示例] | [网站] | [文档] | [聊天][discord] ## 概述 [`tonic`] 由三个主要组件组成:通用 gRPC 实现、高性能 HTTP/2 实现以及由 [`prost`] 驱动的代码生成。通用实现可以通过一组泛型 trait 支持任何 HTTP/2 实现和任何编码。HTTP/2 实现基于 [`hyper`], 这是一个构建在健壮的 [`tokio`] 协议栈之上的快速 HTTP/1.1 和 HTTP/2 客户端及服务端。代码生成 包含从 [`protobuf`] 定义构建客户端和服务端的工具。 ## 功能特性 - 双向流 - 高性能异步 io - 互操作性 - 基于 [`rustls`] 的 TLS - 负载均衡 - 自定义元数据 - 身份验证 - 健康检查 ## 快速上手 - [`helloworld`][helloworld-tutorial] 教程提供了一个使用 `tonic` 的基础示例,非常适合初次使用的用户! - [`routeguide`][routeguide-tutorial] 教程提供了一个使用 `tonic` 及其所有功能的完整示例。 可以在 [`examples`] 中找到示例,对于更复杂的场景,[`interop`] 可能是一个很好的资源,因为它展示了诸多 gRPC 功能的示例。 ### Rust 版本 `tonic` 的 MSRV 为 `1.88`。 ### 依赖项 [`tonic-build`] 在一些 API 中使用 `protoc` [Protocol Buffers 编译器] 来编译 Protocol Buffers 资源文件,例如 [`tonic_build::compile_protos()`]。 ## 获取帮助 首先,看看是否可以在 API 文档中找到您的问题的答案。 如果答案不在那里,在 [Tonic Discord 频道][discord] 中有一个活跃的社区。我们很乐意尝试回答您的 问题。如果还是不行,请尝试提出一个包含该问题的 [issue]。 ## 项目结构 - [`tonic`]:通用 gRPC 和 HTTP/2 客户端/服务端实现。 - [`tonic-build`]:基于 [`prost`] 的服务代码生成。 - [`tonic-types`]:基于 [`prost`] 的 grpc 实用工具类型,包括对 gRPC Well Known Types 的支持。 - [`tonic-health`]:标准 [gRPC 健康检查服务][healthcheck] 的实现。 同时也可作为一元和响应流的示例。 - [`tonic-reflection`]:基于 tonic 的 gRPC 反射实现。 - [`examples`]:展示 tls、负载均衡和双向流的 gRPC 实现示例。 - [`interop`]:互操作性测试实现。 ## 许可证 该项目基于 [MIT 许可证](LICENSE) 授权。 ### 贡献 除非您明确声明,否则您特意提交以包含在 Tonic 中的任何贡献, 均应按 MIT 许可,无需任何附加的条款或条件。
标签:gRPC, HTTP/2, Rust, SOC Prime, 可视化界面, 开发工具, 异步编程, 网络框架, 网络流量审计, 通知系统