Pingora——Cloudflare的高性能Nginx替代方案,每秒处理4000万请求
作者:mmseoamin日期:2024-03-20

Pingora——Cloudflare的高性能Nginx替代方案,每秒处理4000万请求,在这里插入图片描述,第1张



个人名片:

🐼作者简介:一名大三在校生,喜欢AI编程🎋

🐻‍❄️个人主页🥇:落798.

🐼个人WeChat:hmmwx53

🕊️系列专栏:🖼️

  • 零基础学Java——小白入门必备🔥
  • 重识C语言——复习回顾🔥
  • 计算机网络体系———深度详讲
  • HCIP数通工程师-刷题与实战🔥🔥🔥
  • 微信小程序开发——实战开发🔥
  • HarmonyOS 4.0 应用开发实战——实战开发🔥🔥🔥
  • Redis快速入门到精通——实战开发🔥🔥🔥

    🐓每日一句:🍭我很忙,但我要忙的有意义!

    欢迎评论 💬点赞👍🏻 收藏 📂加关注+



文章目录

    • 前言:
    • Pingora 是什么?
      • 核心特性:
      • 应用场景与优势:
      • 有了 Nginx 为什么还需要 Pingora?
      • Pingora有什么优势?
        • 性能提升
        • 更安全
        • 更高效
        • 未来展望:
        • 总结:
        • 欢迎添加微信,加入我的核心小队,请备注来意

          前言:

          早在 2022 年,Cloudflare 就曾宣布将放弃 Nginx,转而采用 Pingora —— 一个他们使用 Rust 在内部构建的新 HTTP 代理。时至今日,Cloudflare 宣布在 Apache 2.0 许可下开源了 Pingora 框架。

          Pingora 是一个 Rust 异步多线程框架,可以帮助构建 HTTP 代理服务。截至目前,Pingora 已在 Cloudflare 的全球网络中处理了近千万亿的互联网请求。

          “我们正在开源 Pingora,以帮助在我们自己的基础设施之外构建一个更好、更安全的互联网。我们希望为我们的客户、用户和其他人提供工具、想法和灵感,以使用内存安全框架构建自己的互联网基础设施。”

          2 月 28 日,Cloudflare 开源了其自研的 Nignx 替代品:Pingora。这是一个基于 Rust 打造的高速、可靠与可编程的网络系统。目前,Cloudflare 已使用 Pingora 全面替代 Nginx 。经过实战检验,Pingora 每秒稳定处理超过 4000 万的网络请求,持续服务数年。下面就来看一看 Pingora 有什么特别之处!

          Pingora——Cloudflare的高性能Nginx替代方案,每秒处理4000万请求,在这里插入图片描述,第2张

          Pingora 是什么?

          Pingora是Cloudflare精心打造的下一代网络代理系统,它继承了Nginx的遗产,同时引入了Rust语言的安全性和性能优势。Pingora的设计目标是提供一个更高效、更安全、更可扩展的网络代理解决方案,以应对现代互联网的复杂挑战。

          核心特性:

          • 多协议支持:Pingora不仅支持传统的HTTP/1和HTTP/2协议,还提供了对TLS、TCP/UDP的全面支持,确保了广泛的应用场景兼容性。
          • 端到端代理能力:Pingora能够实现端到端的HTTP/1和HTTP/2代理,以及对gRPC和WebSocket的支持,满足了现代微服务架构的需求。
          • 可定制负载均衡:Pingora允许用户根据业务需求自定义负载均衡策略,包括权重分配、故障转移等,以实现最优的资源利用和故障恢复。
          • 安全性强化:通过集成OpenSSL和BoringSSL库,Pingora提供了符合FIPS标准的安全保障,并引入后量子加密技术,为未来的安全挑战做好准备。
          • 灵活的API设计:Pingora的API设计直观,易于与OpenResty的"*_by_lua"回调函数对接,使得从Nginx迁移到Pingora的过程更加平滑。
          • 零停机升级:Pingora支持无缝重启功能,确保在升级过程中服务不中断,用户体验不受影响。
          • 强大的监控与日志:与Syslog、Prometheus、Sentry、OpenTelemetry等监控工具的集成,使得Pingora能够提供全面的服务监控和日志记录,帮助用户快速定位和解决问题。

            应用场景与优势:

            • 安全性优先:Pingora的内存安全特性减少了潜在的安全漏洞,使得它成为金融服务、电子商务等对安全性要求极高的应用的理想选择。
            • 性能敏感型业务:Pingora的多线程架构和资源优化设计,使其在处理高并发请求时表现出色,适合需要快速响应和低延迟的应用场景。
            • 高度定制化需求:Pingora的API和过滤器机制为用户提供了高度的灵活性,无论是构建复杂的网关服务还是实现特定的业务逻辑,Pingora都能提供强大的支持。

              有了 Nginx 为什么还需要 Pingora?

              Pingora 是 Cloudflare 使用 Rust 构建的新 HTTP 代理,不仅提升了性能,还为Cloudflare客户带来了众多新功能。令人瞩目的是,它在实现这些的同时,仅需以往代理基础架构三分之一的CPU和内存资源。

              随着Cloudflare业务规模的飞速扩张,其需求已经超越了 Nginx 的处理能力。尽管 Nginx 多年来表现出色,但随着时间推移,其规模上的局限性逐渐凸显。包括:

              • Nginx 架构影响性能:Nginx 的 worker(进程)架构导致每个请求只能由单个worker处理,造成了CPU内核之间的负载不平衡,从而降低了整体性能。此外,这种架构还可能导致执行CPU密集型或阻塞I/O任务的请求减缓其他请求的速度。另外,cloudflare 的用例依赖于高效的连接重用,以减少TCP和TLS握手的时间,加快请求的TTFB。然而, Nginx 的连接池与单个worker相对应,限制了连接的重用率。当增加更多的worker以进行扩展时,连接会分散在更多的孤立池中,导致连接重用率下降,TTFB增加,并增加了资源消耗。

              • 有些类型的功能难以添加: Nginx 作为 Web 服务器、负载均衡器或简单的网关表现出色,但对于更高级、定制化的功能需求,它存在一些局限性。在尝试围绕 Nginx 构建所需功能时,面临着与上游代码库保持一致的挑战,这并不容易实现。除此之外, Nginx 社区的活跃度有限,开发工作往往缺乏开源社区的支持和协作。这限制了我们从社区获取帮助和解决方案的能力。

                为了追求更高的性能,并满足复杂环境中日益增长的功能需求,Cloudflare决定构建全新的解决方案——Pingora。

                Pingora——Cloudflare的高性能Nginx替代方案,每秒处理4000万请求,在这里插入图片描述,第3张


                Pingora有什么优势?

                性能提升

                经过对 Pingora 的实际应用与性能数据的收集,观察到了显著的性能提升。Pingora在处理HTTP请求时,特别是针对缓存未命中的情况,表现出了出色的性能。Pingora架构的创新之处在于其跨线程共享连接的能力,这显著提高了连接的重用率,并大幅减少了在 TCP 和 TLS 握手上所花费的时间。

                根据数据,Pingora 将 TTFB(首字节时间)的中位数减少了 5 毫秒,而第 95 个百分位数更是减少了80毫秒。这并非因为代码运行速度更快,而是因为新架构更有效地管理了连接,从而减少了握手时间。

                此外,与旧服务相比,Pingora每秒的新连接数减少了三分之二。对于一个关键客户,连接重用率从87.1%大幅提升至99.92%,这意味着新连接的数量减少了160倍。换算成实际的时间节省,通过切换到Pingora,每天为客户和用户节省了相当于434年的握手时间。

                更安全

                在大规模分布式环境中,快速且安全地发布新功能是一项艰巨的任务,尤其是在每秒处理数百万个请求的情况下。在这样的环境下,传统的模糊测试和静态分析只能提供有限的保障。

                为了增强系统的稳定性和可靠性,Pingora 选择了使用 Rust 语言,其内存安全语义确保了代码免受未定义行为的影响,从而增强了对服务正确运行的信心。这种保障能够将更多精力集中在服务更改与其他服务或客户来源的交互上,而不是担忧内存安全或难以诊断的崩溃问题。

                自 Pingora 使用以来,已经处理了数百万亿个请求,而且至今尚未因为服务代码而导致崩溃。这证明了Rust在内存安全方面的优势以及 Cloudflare 团队在开发和维护中的努力。

                更高效

                在生产环境中,与旧服务相比,Pingora在相同的流量负载下实现了显著的资源消耗降低。具体来说,CPU消耗减少了约70%,而内存消耗减少了约67%。这一显著的节省主要源于几个关键因素。

                首先,Pingora使用Rust编写的代码相较于之前使用Lua的代码,在运行效率上有显著的提升。Rust作为一种编译型语言,其性能通常优于解释型语言如Lua。

                其次,Pingora的架构设计使得数据访问更加高效。在旧的 NGINX/OpenResty 架构中,Lua代码访问HTTP头时涉及多个步骤,包括从 Nginx C结构中读取、分配Lua字符串、复制到Lua字符串中,以及后续的垃圾回收。而在Pingora中,这种访问变得直接而高效,减少了不必要的中间步骤。

                此外,Pingora采用的多线程模型使得跨请求共享数据更加高效。虽然NGINX也提供共享内存,但由于实施限制,每次访问都需要使用互斥锁,并且只能存储字符串和数字。相比之下,Pingora允许通过原子引用计数器直接访问大多数共享项目,从而提高了数据共享的效率。

                最后,Pingora显著减少了新连接的数量,这也是CPU节省的一个重要方面。与通过已建立的连接发送和接收数据相比,TLS握手过程更加耗时和资源密集。通过提高连接重用率,Pingora能够减少新连接的需求,从而进一步降低资源消耗。


                未来展望:

                Pingora的开发仍在持续进行中,Cloudflare已经明确表示了对HTTP/3支持的规划,这一举措预示着Pingora将继续在网络代理技术领域保持领先地位。随着HTTP/3协议的逐步成熟和普及,Pingora的这一支持将使其能够更好地适应未来的网络环境,为用户提供更快、更安全的网络服务。

                云计算和边缘计算的快速发展为Pingora提供了广阔的应用前景。在这些领域,Pingora的高性能和可扩展性将成为构建高效、低延迟网络基础设施的关键。随着5G技术的推广和物联网设备的增加,Pingora有望在这些新兴市场中发挥重要作用,为各种规模的企业提供强大的网络代理解决方案。

                总结:

                Pingora的开源不仅是Cloudflare技术创新的里程碑,也为全球开发者社区带来了宝贵的资源和机遇。它的高性能特性满足了现代网络服务对速度和响应时间的严格要求;高安全性保障了用户数据的安全和隐私;而高可定制性则使得Pingora能够灵活适应各种复杂的业务需求。

                随着Pingora的不断发展,我们可以预见,它将在网络代理领域引发一场技术革新。无论是对于需要处理海量请求的大型云服务提供商,还是对于寻求构建可靠网络基础设施的中小企业,Pingora都将是一个值得信赖的选择。随着社区的参与和贡献,Pingora的未来将更加光明,它将继续推动网络技术的前进,为全球互联网用户提供更优质的网络体验。


                欢迎评论 💬点赞👍🏻 收藏 📂加关注+



                Pingora——Cloudflare的高性能Nginx替代方案,每秒处理4000万请求,在这里插入图片描述,第4张

                欢迎添加微信,加入我的核心小队,请备注来意

                👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇