Cloudflare 放弃 Nginx,使用内部 Rust 编写的 Pingora


长期以来,Cloudflare 一直依赖 Nginx 作为其 HTTP 代理堆栈的一部分;但现在,他们宣布已将 Nginx 替换为其内部由 Rust 编写的 Pingora 软件,“我们已经建立了一个更快、更高效、更通用的内部代理,作为我们当前和未来产品的平台”。

根据介绍,该软件每天可处理超过一万亿个请求,并可在只使用原本约三分之一的 CPU 和内存资源的情况下提供更好的性能。

随着 Cloudflare 规模的扩大,我们已经超越了 NGINX。多年来它一直很棒,但随着时间的推移,它在我们规模上的局限性意味着构建新的东西是有意义的。我们无法再获得我们需要的性能,NGINX 也没有我们非常复杂的环境所需的功能。

Cloudflare 现在主要专注于在其网络和互联网上的服务器之间代理流量的服务,Pingora 代理服务则为其 CDN、Workers fetch、Tunnel、Stream、R2和许多其他功能和产品提供了动力。

Cloudflare 称,他们选择建立另一个新代理的原因在于,多年来在 NGINX 的使用上遇到了很多限制。其中包括会损害性能的架构限制,以及某些类型的功能难以添加等。并指出,NGINX 社区也不是很活跃,开发往往是“闭门造车”

而他们选择 Rust 作为项目的语言,是因为它可以在不影响性能的情况下以内存安全的方式完成 C 可以做的事情。Cloudflare 还为 Rust 实现了自己的 HTTP 库,以满足他们所有不同的需求。Pingora 采用多线程架构而不是多进程。

Pingora 上的总体流量显示,TTFB 中位数减少了 5 毫秒,第 95 个百分位数减少了 80 毫秒。在所有 customers 中,与 old service 相比,Pingora 每秒的新连接数只有三分之一。对于一个 major customer 来说,它将连接重用率从 87.1% 提高到 99.92%,这使得新连接到其 origins 的次数减少了 160 倍。“为了更直观地呈现这一数字,通过切换到 Pingora,我们每天为客户和用户节省了 434 年的 handshake time。”

在生产环境中,与 old service 相比,Pingora 在相同流量负载的情况下消耗的 CPU 和内存减少了约 70% 和 67%。而除了性能优势之外,Pingora 还被认为更安全,这在很大程度上则要归功于 Rust 的使用。不过 Pingora 尚未开源,Cloudflare 表示他们正在制定计划,但目前该 HTTP 代理尚未公开。

更多详情可查看官方博客。


相關推薦

2023-03-01

去年曾报道过,Cloudflare 将 Nginx 替换为内部采用 Rust 编写的 Pingora,目标是构建一个更快、更高效、更通用的内部代理,用作 Cloudflare 当前和未来产品的平台。不过 Cloudflare 的基础设施非常庞大,并且包含许多不同的服务。 近

2022-09-21

有意外的话 Rust 将在 6.1 版本进入 Linux 内核 Cloudflare 放弃 Nginx,使用内部 Rust 编写的 Pingora GStreamer 准备将 Rust 编写的插件作为其官方二进制版本的一部分发布 Rust 成立专门的安全团队 Asahi Linux 计划使用 Rust 编

2023-03-03

p;2023 年采用 Rust 重写的案例越来越多,可延伸阅读: Cloudflare 使用 Rust 重写 Nginx C 模块,目标是“去 Nginx” Mesa Vulkan 驱动探索采用 Rust 重写 Fish Shell 计划采用 Rust 重写    

2023-01-19

Shopify 开发团队去年将原本用 Ruby 编写的 CLI 工具改用 Node 进行了重写,并在近日介绍了这项决定背后的原因和权衡。 Shopify CLI 是 Shopify 平台开发者的重要工具,能够用于构建主题、应用程序和 Hydrogen 开发,让开发者以最佳实

2022-06-23

,它为 Serverless 计算进行了优化。 在上个月,Deno 还与 Cloudflare 和 Node.js 达成合作,承诺改善 JavaScript 互操作性,其中他们将共同创建使开发人员能够在 Deno、Node.js 和 Cloudflare 的 Serverless 应用程序平台(Cloudflare Workers)之间编

2023-10-30

时相同),并遵循 WinterCG 规范,目的是最大限度地兼容 Cloudflare Workers、Deno Deploy 和 Vercel 等其他服务(因此命名为 WinterJS)。 WinterJS 除了速度极快,还能通过 WASIX 编译成 WebAssembly,因此完全支持在 Wasmer 上运行。 使用示例

2022-10-15

ownership 的概念。 如果你想利用 Rust 的优势,则必须愿意放弃一些可能导致错误的已熟悉的功能。还有些人认为,Rust 的语言语法也很复杂。除了大括号和圆括号,还有方括号、竖线和大于号;有时候甚至还有双冒号。 构建复

2023-04-28

KCL Go SDK 客户端构建在 kclvm json2 rpc API 之上,这意味着它使用和其他语言的 kclvm 客户端使用的相同 API 与 KCL 源代码交互,这与其他语言的 KCL SDK 工作方式类似,但提供了更加友好的 Go 语言风格的包装。 新版本 KCL Go SDK 解决了

2023-08-25

下面是简化软件栈的计划: OS version (Debian 12) CDN/WAF (Cloudflare) Web server service (Nginx) Infrastructure as Code (Ansible) Kali Autopilot Kali 2023.1 首次引入了 Kali Autopilot,团队称这是一个自动化攻击框架。它有点像 "AutoPwner",遵循预先

2022-09-30

broker 的硬件抽象层(HAL),本身是用 Elixir 编写的;但他使用 Rust 和 async Futures 完成了这个任务。“这也是一个很大的确认,这确实是有用的东西。所有的东西从一开始就很有效”。 之后,他和具有同样抱负的 Nikolaos Korkakakis

2023-06-30

谷歌基于团队内部使用 Rust 的体验和经历,分享了他们对这门“网红”编程语言的见解,其中包括对常见 Rust 谣传的澄清。 1. Rust 至少需要学习 6 个月 谷歌驳斥了此说法。 谷歌内部调查显示,超过 2/3 的受访者有信心在学习

2022-09-13

min_api 已弃用的别名已被删除。如果自定义 Nginx 模板仍然使用它,请将其更改为 Kong.admin_content。 #8815 删除了 dataplane 配置缓存,配置持久性现在使用 LMDB 自动完成。 #8704    更多内容可以查看完整 CHANGELOG。

2023-05-27

目中轻松导入这些已经由谷歌审核完成的结果,以证明所使用的 Rust Crate 的属性;并根据这些数据,判定 crate 是否满足项目的安全性、正确性和测试要求。同时,也避免了开发者之间一些重复的审计工作。 “Rust 可以轻松地将

2023-04-18

重点更新:语言、工具链、社区集成 & 扩展支持。 使用 IDE 插件提升 KCL 代码编写体验和效率 Helm/Kustomize/KPT 云原生社区工具集成 完善 KCL 多语言 SDK,方便应用程序集成 进一步您可以在 KCL v0.4.6 发布页面 或者&