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

tonic

一个关注高性能、互操作性和灵活性的 HTTP/2 上 gRPC 实现方案

39 个版本

0.12.1 2024 年 7 月 17 日
0.11.0 2024 年 2 月 8 日
0.10.2 2023 年 9 月 28 日
0.9.2 2023 年 4 月 17 日
0.0.0 2018 年 7 月 18 日

#1 in Web 编程

Download history 858576/week @ 2024-05-03 956054/week @ 2024-05-10 1002288/week @ 2024-05-17 957071/week @ 2024-05-24 1120742/week @ 2024-05-31 1127039/week @ 2024-06-07 1039301/week @ 2024-06-14 1075720/week @ 2024-06-21 958784/week @ 2024-06-28 990276/week @ 2024-07-05 985629/week @ 2024-07-12 946697/week @ 2024-07-19 973844/week @ 2024-07-26 927060/week @ 2024-08-02 1022522/week @ 2024-08-09 1069443/week @ 2024-08-16

4,185,868 每月下载量
用于 2,084 个 Crates(直接使用 1,392 个)

MIT 许可证

470KB
10K SLoC

gRPC 的 Rust 实现方案,一个高性能、开源的通用 RPC 框架,将移动和 HTTP/2 作为首要目标。

tonic 是一个关注高性能、互操作性和灵活性的 HTTP/2 上 gRPC 实现方案。这个库是为了具有异步/等待的一等支持并作为用 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.buildScripts.enable": true 设置为正确加载生成的代码。

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

Rust 版本

tonic 的 MSRV 是 1.70

$ 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

Windows

  • 这里 下载最新版本的 protoc-xx.y-win64.zip
  • 解压文件 bin\protoc.exe 并将其放置在 PATH 的某个位置
  • 通过在命令提示符下输入 protoc --version 验证安装

教程

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

获取帮助

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

项目布局

贡献

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

许可证

本项目采用MIT许可证

贡献

除非您明确表示,否则您提交给Tonic的任何有意包含的贡献将按照MIT许可证授权,不附加任何额外条款或条件。

依赖项

~4–16MB
~206K SLoC