开源Pingora:我们的可编程网络服务构建Rust框架
内容提要
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、文档问题或功能请求。在提交拉取请求前,建议先阅读贡献指南。