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

来源: OSCHINA
2022-09-16 08:38:46

长期以来,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 代理尚未公开。

更多详情可查看官方博客

展开阅读全文
点击加入讨论🔥(13) 发布并加入讨论🔥
本篇精彩评论
现在性能强,是因为他满足自身定制的各种需求,但如果放到公用领域,就一样的功能臃肿,能做到稳定都不易,就别想性能了。不过是多了一个更多的选择。
2022-09-16 09:58
20
举报
一天到晚说国内什么什么的。tengine 不算?openresty 呢?
2022-09-16 09:24
7
举报
凡是有GC的,性能都比C/Rust差,而且受GC影响,延迟不稳定,云平台怎么可能接受这种事情。
2022-09-20 15:52
3
举报
安全也不能仅限语言,代码写得好,C也能写出安全代码
2022-09-16 12:04
3
举报
终于有个明白人,通用性和性能之间肯定需要有个平衡
2022-09-16 10:39
2
举报
13 评论
18 收藏
分享
返回顶部
顶部