#grpc #grpc-server #rpc #protobuf #rpc-framework #future #async

tonic-arcanyx-fork

一个专注于高性能、互操作性和灵活性的 gRPC over HTTP/2 实现

1 个不稳定版本

0.8.1-alpha.02022 年 8 月 29 日

#1515 in 网络编程


tonic-web-arcanyx-fork 中使用

MIT 许可证

425KB
9K SLoC

A rust 实现 gRPC,这是一个高性能、开源的通用 RPC 框架,首先考虑移动设备和 HTTP/2。

tonic 是一个专注于高性能、互操作性和灵活性的 gRPC over HTTP/2 实现。这个库被创建出来是为了提供异步/await 的一等支持,并作为用 Rust 编写的生产系统的主要构建块。

Crates.io Documentation Crates.io

示例 | 网站 | 文档 | 聊天

概述

tonic 由三个主要组件组成:通用的 gRPC 实现、高性能的 HTTP/2 实现以及由 prost 驱动的代码生成。通用实现可以支持任何 HTTP/2 实现和任何编码,通过一组通用特质。HTTP/2 实现基于 hyper,这是一个基于强大的 tokio 栈构建的快速 HTTP/1.1 和 HTTP/2 客户端和服务器。代码生成包含从 protobuf 定义构建客户端和服务器所需的工具。

特性

  • 双向流
  • 高性能异步 I/O
  • 互操作性
  • rustls 提供支持的 TLS
  • 负载均衡
  • 自定义元数据
  • 身份验证
  • 健康检查

入门

示例可以在 examples 中找到,对于更复杂的情况,interop 可以作为很好的资源,因为它展示了 gRPC 许多功能的示例。

如果您正在使用 rust-analyzer,我们建议您将 "rust-analyzer.cargo.runBuildScripts": true 设置为正确加载生成的代码。

对于 IntelliJ IDEA 用户,请参考 此处 并启用 org.rust.cargo.evaluate.build.scripts 实验性功能

Rust 版本

tonic 目前支持 Rust 1.56 及以上版本,因为它需要支持 2018 版本。

$ rustup update
$ cargo build

依赖项

为了构建 tonic >= 0.8.0,您需要 Protocol Buffers 编译器 protoc 以及 Protocol Buffers 资源文件。

Ubuntu

sudo apt update && sudo apt upgrade -y
sudo apt install -y protobuf-compiler libprotobuf-dev

Alpine Linux

sudo apk add protoc protobuf-dev

macOS

假设 Homebrew 已经安装。(如果没有,请参阅 Homebrew 网站 上的安装说明。)

brew install protobuf

教程

  • helloworld 教程提供了使用 tonic 的基本示例,非常适合初次用户!
  • routeguide 教程提供了使用 tonic 和所有其功能的完整示例。

获取帮助

首先,查看您的问题是否可以在 API 文档中找到答案。如果找不到答案,Tonic Discord 频道 中有一个活跃的社区。我们很乐意尝试回答您的问题。如果这样做不起作用,请尝试打开一个 问题

项目布局

贡献

🎈 感谢您的帮助,使项目得到改进!我们非常高兴您能加入我们!我们有一个贡献指南,帮助您参与Tonic项目。

许可证

本项目遵循MIT许可证

贡献

除非您明确声明,否则您提交给Tonic项目的任何有意贡献都应作为MIT许可证授权,不附加任何额外条款或条件。

依赖项

~4–17MB
~222K SLoC