开源Pingora:我们的可编程网络服务构建Rust框架

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

Pingora是由Cloudflare开发的Rust框架,已在Apache许可证版本2.0下开源。它是一个内存安全的框架,用于构建HTTP代理服务,已处理近千万亿次的互联网请求。Pingora提供了代理、客户端和服务器的构建模块,以及可定制的负载均衡和故障转移策略。它支持HTTP/1、HTTP/2、gRPC和websocket代理,并可与可观察性工具集成。Pingora对于那些优先考虑安全性、性能和广泛定制的人非常有益。该框架开放给贡献者,并旨在构建更安全和可定制的互联网基础设施。

🔎

延伸解读

Pingora 的定位:库而非成品

Pingora 是一个库和工具集,而不是可执行的二进制文件。这意味着它提供构建 HTTP 代理服务的底层组件,但用户需要自行编写代码来组装成完整的服务。对于希望快速部署现成代理的用户,可能需要等待基于 Pingora 的上层应用,目前 Cloudflare 正与 ISRG 合作推进这一方向。

API 稳定性与平台支持现状

当前 Pingora 的 API 稳定性尚未得到保证,尤其是在 1.0 版本之前,可能会发生破坏性更改。此外,非 Unix 操作系统目前不在支持路线图中。因此,如果计划在生产环境采用,需要关注版本更新并做好应对变更的准备,同时确保运行环境为 Unix 系统。

可编程性带来的定制优势

Pingora 提供高度可编程的 API,允许用户通过过滤器和回调自定义请求处理、转换和转发。例如,可以轻松实现自定义负载均衡策略或修改请求头。对于熟悉 OpenResty 和 NGINX 的开发者,许多概念可以直观映射,降低了学习成本,适合需要深度定制网关或负载均衡器的场景。

内存安全与性能的权衡

Pingora 使用 Rust 编写,强调内存安全,相比 C/C++ 服务能减少内存安全问题。同时,其多线程架构有助于节省 CPU 和内存资源,提升性能。对于安全优先或性能敏感的服务,Pingora 是一个值得考虑的替代方案,但需注意其生态和工具链可能不如传统方案成熟。

❓

Q&A

Pingora是什么?它由谁开发并采用什么开源协议?

Pingora是Cloudflare开发的Rust异步多线程框架,用于构建HTTP代理服务,已在Apache许可证2.0下开源。

Pingora支持哪些协议和代理功能?

Pingora支持HTTP/1和HTTP/2端到端、gRPC和websocket代理,并提供构建HTTP/1、HTTP/2、TLS或TCP/UDP服务的库和API。HTTP/3支持在路线图中。

哪些场景适合使用Pingora?

适合安全优先(作为C/C++的内存安全替代)、性能敏感(多线程架构节省CPU和内存)以及需要广泛定制(高度可编程API)的服务。

Pingora如何实现零停机升级?

Pingora提供零停机优雅重启功能,可以在不丢弃任何传入请求的情况下升级自身。

Pingora的API稳定性如何?目前有哪些限制?

目前API稳定性未得到保证,可能会有破坏性更改,尤其是在1.0之前。此外,暂不支持非Unix操作系统,且不在路线图中。

如何为Pingora项目做贡献?

可以在GitHub问题跟踪器上报告bug、文档问题或功能请求。在提交拉取请求前,建议先阅读贡献指南。

🏷️

标签

➡️

继续阅读