Tonic 加入 gRPC 项目
摘要
Tonic,这个广受欢迎的 Rust gRPC 库,即将被上游至 CNCF 下的官方 gRPC 项目,同时计划推出新的 crate,并为现有用户提供持续支持。
<p><a href="https://lobste.rs/s/9ygtid/tonic_is_joining_grpc_project">评论</a></p>
查看缓存全文
缓存时间: 2026/05/20 02:23
# Tonic 正在加入 gRPC 项目
来源:https://luciofranco.com/blog/tonic-joins-grpc/
下周,`hyperium/tonic` 将变为 `grpc/grpc-rust`,我们将发布新版 `grpc` crate 的预览版。这标志着 `tonic` 项目以及 Rust 中所有 `gRPC` 用户迈出了重要的一步,因为它将被上游合并到官方的 gRPC 项目 (https://grpc.io/) 中。gRPC 项目是云原生计算基金会 (CNCF (https://www.cncf.io/)) 的一部分,而 CNCF 又是 Linux 基金会的一个分支。
## tonic 如何走到今天
在深入细节之前,我想先简要回顾一下 `tonic` 的历史。我在 2019 年夏天创建了这个项目,主要是因为我想要用 Rust 编写一些分布式系统。最初,Carl Lerche 编写了 `tower-grpc`,当时在 Buoyant 公司使用,这为开始编写一个真正的 Rust gRPC 库提供了完美的初始框架。那时正值 async/await 即将发布,所以我为自己设定了一个目标:创建第一个可投入生产的 async/await Rust 库。我将所有空闲时间都投入到构建这个项目中,力求让它尽快面世。终于在 2019 年秋天,我发布了第一个 0.1 版本。从那以后,一切成为历史,如今该项目在 GitHub 上已积累了超过 12,000 颗星,并被许多大型工程组织使用。
虽然我非常感激项目为社区和我个人带来的成长和支持,但维护起来已经变得相当困难。构建新功能需要大量的时间投入,而审查新的变更也因项目可用的维护资源而变得不可持续。除此之外,`prost` 项目已经无人维护,而我们 `tonic` 的维护者别无选择,只能将其纳入我们的家族,因为它是核心依赖。这大大增加了维护负担。随着岁月的流逝和生活的变化,我开始失去充分维护项目所需的时间,并且我很难找到愿意长期留下的维护者。对于大型开源项目来说,这是一个非常正常的过程,这也是开源社区中常见的主题。这一切导致项目不再接受新功能,而只处理高优先级/紧急的 bug,以及最重要的安全问题。
## 正在发生的变化
时间快进到 2024 年初,我收到了来自 Google gRPC 团队的 Doug Fawley 的一封邮件。他联系我,询问我们是否愿意合作,并表示他正在研究 gRPC-Rust,不想以不必要的方式破坏生态系统。这是 gRPC-Rust 的开始,从那时起,我们每周都会开会,我投入时间帮助他们找出如何最好地满足他们的需求和 `tonic` 社区的需求。
在过去的两年里,Google 团队一直在开发 gRPC-Rust 作为一个新的 crate,它将包含许多新的优化,并在总体上将 gRPC 实现提升到其他 gRPC 实现已经达到的质量标准。为了支持这一点,有一个全新的实现,利用新的 API 来支持控制分配等功能。虽然这很好,但仍有大量用户使用 tonic,并且他们无法轻易地将代码库重写为这种新结构。为了支持我们最初的核心宗旨——支持现有社区,我们还设计了任何新的传输功能(非用户代码生成)以与 `tonic` 的代码生成兼容。这意味着即将在新传输中提供的所有新的负载均衡器和厚客户端功能,将可供当前的 `tonic` 用户通过更改他们的 channel 来使用。这可能意味着我们最终将弃用旧的 tonic 传输层,以使 `tonic` 更轻量,并逐步将其转变为一个更符合 Rust 人体工程学的实现,同时仍然从新工作中获得大量好处。我们仍在研究细节,即将发布的预览版实际上仍将基于 tonic 传输层,但我们将随着在 grpc-rust 中实现新的客户端和服务端而朝这个方向前进。
创建这个工作组的好处之一是我们能够找到其他有兴趣贡献的公司。这时 LinkedIn 的人介入了,他们贡献了最常被要求且最难以实现的功能之一:xDS。如果你还不了解 xDS,它是一种发现服务,为 gRPC 客户端提供关于如何到达服务并对其进行负载均衡的详细信息。它被用作服务网格产品(如 Envoy)的核心协议。它极其复杂,我们从未在 tonic 中拥有构建它的资源。感谢 LinkedIn 人员所做的工作,我们将发布一个新的 `tonic-xds` crate,然后会重用内部机制,也为新的 `grpc` crate 提供实现。
## 加入 CNCF
随着工作组完成所有这些工作,现在已经到了我们将 `tonic` 项目上游到 CNCF 拥有的 `grpc` 组织的时候了。我将继续作为项目的核心维护者,但我们也将欢迎来自 Google、LinkedIn 和 Datadog 的工程师来帮助维护新旧项目。这是 `tonic` 走向成熟并最终达到下一个层次的表现。Rust 用户可以在接下来的一年里期待 gRPC-Rust 团队提供一个非常出色且稳定的生产级实现。随着我们继续这一过渡,我鼓励大家发声并提供反馈,因为我们正在为旧的和新的项目铺平道路。
相似文章
@voidzerodev: Rolldown 现在以 Rust crate 形式提供,并将持续在那里和 npm 上发布。
Rolldown 是一个构建工具打包器,现在以 Rust crate 形式提供,并将持续在那里和 npm 上发布。
@charliermarsh:在OpenAI,我们继续押注Rust作为系统编程的未来。我很自豪地宣布,我们正在……
OpenAI宣布向Rust基金会承诺60万美元,包括白金会员资格以及为Rust生态系统的维护者提供额外支持。
我们如何(及为何)将生产环境的C++前端基础设施重写为Rust
NearlyFreeSpeech.NET 将其生产环境的C++前端基础设施(nfsncore)重写为Rust,该系统负责所有传入请求的路由、缓存和访问控制。迁移的动机是Rust的安全性保证、性能、生态系统优势以及老化的C++代码库的局限性。
ton-blockchain/acton
Acton 是一个基于 Rust 的综合 CLI 工具包,涵盖 TON 智能合约开发的完整生命周期,包括构建、测试和部署。
将React编译器移植到Rust
一项将React编译器移植到Rust的计划,旨在提高性能并与Rust生态系统集成。