您现在的位置是:电脑教程 >>正文
放弃Nginx!Cloudflare一招反超Apache!
电脑教程97934人已围观
简介撰稿丨千山近日来,网站安全和托管服务供应商Cloudflare可以说春风得意。根据网络咨询服务公司Netcraft的调查报告,今年1月在前100万个最繁忙的网站中,Cloudflare以21.64% ...
撰稿丨千山
近日来,放网站安全和托管服务供应商Cloudflare可以说春风得意。招反
根据网络咨询服务公司Netcraft的放调查报告 ,今年1月在前100万个最繁忙的招反网站中 ,Cloudflare以21.64%的放市场份额,一举越过Apache(21.40%)和Nginx(21.20%),招反从第3位跃升至首位,放成为最受欢迎的招反Web服务器。
之后 ,放在国际权威研究机构GigaOm发布的招反全球CDN服务雷达报告中 , Cloudflare又在15个供应商的放解决方案中脱颖而出,高防服务器被评为“领导者”和“表现卓越者”。招反

图源 :GigaOm官网 。放(注:如图所示 ,招反GigaOm 雷达报告在一系列同心圆上评估,放越靠近中心的解决方案整体价值越高。)
成立于2009年的Cloudflare以向用户提供网站安全管理 、性能优化及相关的技术支持为主要业务 。在技术上 ,这家公司很长一段时间都将Nginx视为核心,用于其提供的所有Web服务中,但这一状况在去年发生了变化。
2022年9月,服务器租用Cloudflare宣布用自研的以Rust编写的Pingora取代了Nginx ,旨在构建一个更快、更高效、更安全的全新HTTP代理 。这一决策在当时也引起了一些猜测 ,不过从目前来看,彼时果断地改弦易辙正逐步展露成效。
1 、为什么要舍弃Nginx?Cloudflare之所以会放弃Nginx ,简单来说 ,就是Nginx已经无法满Cloudflare日益增长的业务需求。亿华云
对此 ,Cloudflare的官方技术博客曾专门发文进行了解释 ,将Nginx的种种局限性主要归因为三点 :
其一 ,架构限制影响性能 。Nginx的worker(进程)架构对于Cloudflare的用例而言存在操作缺陷,导致损害性能和效率。
其二,某些功能类型难以添加。围绕Nginx构建所需功能时要尽量避免与Nginx上游代码库有太多分歧 ,这无疑会增加难度 。而且Nginx是纯用C语言编写的香港云服务器,在设计上不能保障内存安全性。使用这样的第三方代码库非常容易出错 。用来补充C语言的另一种编程语言Lua虽然风险较小 ,但性能也较差。
其三,社区活跃度不高。Nginx社区本身不是很活跃,开发往往是“闭门造车”。
当然,上述局限性中更致命的还是源码下载第一点 。就像Cloudflare工程师在文中一针见血地指出:“对于我们的用例来说 ,最关键的问题是糟糕的连接重用。”

截图 :https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/
简单来说 ,在Nginx中每个请求只能由单个worker处理 。这会导致所有CPU内核的负载不平衡 ,从而导致处理速度变慢。
代理层节点机器与源服务器建立TCP连接,以代理HTTP请求 。连接重用通过重用之前从连接池建立的连接 ,免费模板跳过新连接所需的TCP和TLS握手,来加快请求的TTFB(首字节时间)。
但是,Nginx连接池是按worker划分的 。当请求到达某个worker时 ,它只能重用该worker内的连接 。当我们添加更多Nginx worker以进行扩展时,连接重用率会变得更差,因为连接分散在所有进程的更多隔离池中 ,不仅会导致响应时间变慢 ,也会消耗额外的硬件资源。

图源 :Cloudflare官方技术博客
针对这一问题 ,Cloudflare技术团队虽然尝试过种种优化方案 ,但最终发现只要Nginx Work(进程)架构不变 ,还是治标不治本。
2 、身处三岔口的抉择放弃Nginx ,选择自研,也并非一蹴而就 。Cloudflare经历了几年的持续评估 ,当时 ,他们主要面临三种选择。
其一 ,继续投资Nginx ,并使用Fork版本来让其完全适配业务需求。尽管Cloudflare团队的专业储备过硬,但鉴于上述架构限制,必然要付出大量时间和努力才能实现重建 。
其二,迁移到另一个第三方代理代码库。考虑使用别的好项目 ,比如envoy 。但这条道路意味着在几年内可能会重复同样的循环——不断探索试错,才能逐步磨合 。
其三,从头开始 ,建立一个内部平台和框架。这一选择需要在开发方面进行大量的前期投资。但优点是能从起点就百分之百围绕Cloudflare的用例服务 。
站在三叉路口 ,没有人能笃定那条道路就一定是光明坦途。正如Cloudflare的技术人员在回顾这段时间时谈到的 :“在几年的时间里,我们继续走阻力最小的道路 ,继续增强Nginx。然而 ,在某些情况下 ,建立自有代理的投资回报率似乎更值得。我们呼吁从头开始建立一个代理 ,并开始设计我们梦想中的代理应用程序 。”
如今 ,结果我们也看到了。他们坚定地迈向了第三条路——构建全新的代理架构,这就是用Rust编写的Pingora。
从零开始造轮子并非易事 ,但Pingora的表现却并不让人失望。据介绍 ,Pingora每天处理超过1万亿条请求,提高系统性能之余,也为Cloudflare客户带来不少新功能 。更重要的是,它运行所占用的CPU和内存资源只相当于原有代理基础设施的三分之一。
3 、用Rust重写Nginx模块自去年9月的发布以来,Cloudflare团队在“去Nginx化”的道路上一直在低调前行。日前 ,Cloudflare在其官博上介绍了如何使用Rust重写Nginx模块。
“我们的工程师们用Rust为Cloudflare基础设施中最古老和最不为人所知的部分 ——cf-html ,编写了替代品,通过完成这项工作为我们完全摆脱Nginx铺平了道路”
cf-html是一个Nginx模块 ,位于Cloudflare的核心反向Web代理内部 ,亦称为FL (Front Line)。FL运行着Cloudflare应用程序服务的大部分逻辑 ,因此这次替换如果能顺利完成,无疑会更具标志性 。

图源 :推特@Cloudflare
Cloudflare方面表示,未来他们会继续逐步更换用于运行Nginx/OpenResty代理的组件 ,或者无需对自研平台投入大量开发资源就可以完成的组件,从而构建一个没有Nginx的未来 。
最后Cloudflare还提到了Rust带来的优势 :“很难想象如果没有像Rust这样的语言,我们会处于怎样的境地 ,因为Rust在提供速度的同时又提供了高度的安全性 ,还有像Bindgen和Serde这样的高质量库。”
“更宽泛地说 ,FL团队正在努力将平台的其他方面迁移到Rust中,虽然cf-html和围绕其构建的功能是我们基础架构中需要改进的关键部分 ,但还有许多其他方面需要改进。”
“多数人认为编程语言的安全性主要是用于预防错误 ,但对于一家公司来说,我们发现编程语言的安全优势还可以用来完成一些被认为非常困难、或不可能安全实现的功能需求 。”
4、结语 :“去Nginx化”成趋势了吗就Cloudflare这个案例来说,Pingora比Nginx的表现更高效更安全,并不意味着Rust比C语言好,也并不表示Pingora在任何场景下都优于Nginx ,而是Pingora更适合Cloudflare的用例。
CDN的规模导致了其对微小抖动的敏感性,同时底层基础设施的技术改进也是Cloudflare这样的公司点燃其革新火种的助力之一。Cloudflare选择了对他们的业务模型表现更佳的解决方案。
但是我们注意到,近年来一些大厂在“去 Nginx”上动作频频。比如 :
(1)Dropbox从Nginx迁移到了Envoy;
(2)百度开源采用GO语言的BFE;
(3)阿里巴巴云原生网关Higress基于Envoy ,支持Nginx Ingress零成本快速迁移 。
不可否认,Nginx在反向代理、负载均衡方面表现出色,但“C+Lua”的组合也的确很难在性能和安全上实现两全 。作为时代的产物,Nginx或许不能被轻易进行比较 ,但“去Nginx化”似乎正在成为一种趋势 。
参考链接:https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/
https://news.netcraft.com/archives/2023/01/27/january-2023-web-server-survey.html
https://twitter.com/Cloudflare/status/1629119206770847744?s=05
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“信息技术视野”。http://www.bziz.cn/html/505f799487.html
相关文章
保护数字前沿:下一代防火墙如何塑造网络安全的未来
电脑教程在当今互联的世界中,网络威胁变得越来越复杂,对强有力的网络安全措施的需求从未如此迫切。随着企业和个人越来越依赖数字平台,网络攻击和数据泄露的风险日益凸显。在这种背景下,下一代防火墙(NGFW)已成为保 ...
【电脑教程】
阅读更多如何保护数据中心免受电子腐蚀和突然故障的威胁?
电脑教程日益恶化的空气质量是当今环境最严重的威胁之一。这次衰退主要是由于空气分子污染(AMC)和像烟尘这样的大气微粒造成的。当我们花大量时间关注室外空气调节时,我们往往忽略了办公室的室内空气质量(IAQ)。室 ...
【电脑教程】
阅读更多以赛睿QcKmass打CF效果如何?(以赛睿QcKmass鼠标垫在CF中的表现)
电脑教程随着电竞的兴起,以赛睿QcKmass作为一款专业游戏鼠标垫,备受玩家们的青睐。在热门游戏《穿越火线》中,以赛睿QcKmass的表现如何呢?本文将从多个角度来探讨这一问题。外观设计与材质以赛睿QcKma ...
【电脑教程】
阅读更多
热门文章
最新文章
友情链接
- MotoZ信号表现如何?(探索MotoZ在各种信号环境下的表现和关键特性)
- 优沃IWM智能体重管理系统——轻松掌控健康(健康管理新利器——优沃IWM帮你实现身体管理的新高度)
- 海尔电视品牌的质量与口碑如何?(揭秘海尔电视品牌的关键优势和用户评价)
- 索尼手提电脑大白菜重装系统教程(详细步骤教你轻松重装索尼手提电脑系统)
- 使用戴尔笔记本微PE装Win10的详细教程(快速方便地安装Windows10操作系统的方法)
- SupremeFXS1220音效技术评测(探索SupremeFXS1220音效芯片的卓越性能与创新功能)
- 万和灶质量如何?(万和灶质量评估及用户评价)
- 小米海康威视摄像头(细致监控,安心无忧)
- 使用最新版U盘装Win7系统教程(轻松安装最新版Win7系统的详细步骤) 源码库企业服务器网站建设亿华云香港物理机b2b信息平台云服务器