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 代理尚未公开。

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


相关文章

2022-09-21

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

2022-06-23

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

2022-09-13

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

2022-07-02

定版现已发布,具体更新内容如下: cargo add 现在可以使用cargo add直接从命令行添加新的依赖项。该命令支持指定功能和版本。它也可以用来修改现有的依赖项。 例如: cargo add log cargo add serde --features derive cargo add [email protected] 有关

2022-02-24

为了获得最大化的性能,最好的方案还是在专门的硬件上使用包含定制编译器的 C 语言。这对汽车上的推断计算机上的最大帧率 (max frame rate) 十分重要。其他场景他们主要使用 C++ 和 Python 还有golang。他还强调道,除非需要针对

2022-06-23

:如果后端响应中有多个 "Vary" header 头,nginx 仅在缓存时使用最后一个。 Bugfix:如果后端响应中有多个 "WWW-Authenticate" header 头,并且代码 401 的错误被拦截或使用了“auth_request”指令,则 nginx 仅将第一个 header 头发送到客户端

2022-03-25

Firefox 制造商 Mozilla 在近期发布的中谈及其对 Web 技术发展的目标及愿景,该目标基于 中对Web 的三个基本价值观: Web 应当具有开放性:每个人都可以访问网络,并使用它来接触其他人。 Web 仅作为一个代理机构:每个人接触网

2022-01-21

缓慢的图片或视频。 在俄罗斯和国外的几家公司开始使用 NGINX 之后,Igor 于 2004 年 10 月 4 日正式对外公开发布 NGINX,并将其开源。 此后长达 7 年的时间里,他独自一人负责 NGINX 的开发和维护工作。在此期间,他编写了

2022-07-29

为内部和外部开发人员提供良好的体验。该公司保证称,使用受支持语言编写代码的人,将不会被要求将代码转换为不同的语言。 Hack 是 Meta 自己开发推出的一款新的编程语言,一种类型安全的 PHP 变体,依赖于 HipHop Virtua

2022-06-17

Cloudflare 在官方博客写道,上周他们自动检测并缓解了每秒 2600 万次请求的 DDoS 攻击,据称是有史以来最大的 HTTPS DDoS 攻击。 该攻击针对的是一个使用 Cloudflare 免费计划的客户网站。与之前的 15M rps 攻击类似,这次攻击主要也

2022-09-20

领域,GStreamer 的开发人员也一直对这种现代编程语言的使用很感兴趣。目前,相关的 GStreamer 合并请求已落地,以支持为 native builds 构建 Cargo-C recipes;这是将 Rust 编写的插件作为项目的官方二进制版本的一部分发布的一个必

2022-06-20

ri 1.0 已正式发布。 Tauri 是一个桌面 UI 框架,可让开发者使用每个平台的 Webview 技术栈为所有主要桌面操作系统构建应用程序,目前支持 Windows/macOS/Linux 等平台。开发者通过 Tauri 几乎可以使用任何编译为 HTML、JS 和 CSS 的前端框

2022-08-23

ar] (#1139) 如果在环境中设置了GIT_DIR和GIT_WORK_DIR,会进行使用 (#1191) 重新设计的 FAQ 页面 在 wayland 上支持复制到剪贴板 [@JayceFayne] (#397) Bugfix opening tags list without remotes (#1111) tabs indentation in blame [@fersilva16] (#111

2022-09-21

此开发团队希望利用通过这些语言编写的所有包。 以前使用 Gleam 构建工具的项目可能依赖于用 Gleam 或 Erlang 编写的包。从这个版本开始,还支持用 Elixir 编写的项目,让 Gleam 程序员可以访问几乎所有在 Erlang 生态的包管