Cloudflare 对外宣称网络变得更快、更安全,而这次变革的核心动力来自于一种编程语言:Rust。对于广泛依赖 Cloudflare 提供边缘加速、DDoS 防护与安全功能的企业与开发者而言,底层基础设施的改进并非抽象概念,而是能够直接带来页面和 API 响应速度、连接稳定性与运维效率的切实收益。本篇文章从技术与产品角度,系统梳理 Cloudflare 如何通过用 Rust 重建其"网络大脑"来实现更低延迟、更高可靠性与更极速的交付周期,并分析这对用户和行业的长期意义。 在互联网请求到达 Cloudflare 的网络边缘后,会经历一系列处理环节,从 TLS 与 HTTP 终止开始,随后进入名为 FL 的系统,然后由 Pingora 等组件负责缓存判断与源站回源。FL 长期承担着规则引擎、WAF、路由决策与其他安全策略的执行,因此被称为 Cloudflare 的"脑"。然而,FL 的历史可以追溯到十多年之前,其最初基于 NGINX 与 PHP 开发,随后演进为 NGINX 与 OpenResty、LuaJIT 的组合。
这样的技术演进在早期带来了快速迭代的优势,但随着产品线扩展与逻辑复杂度上升,灵活性反而变成了负担。动态语言与跨语言边界的复杂性导致维护成本上升,隐晦的错误与多语言之间的数据转换开始成为性能瓶颈与可靠性隐患。 选择以 Rust 为基础重建新一代 FL,并非偶然。Cloudflare 自身在其他关键组件的开发中已经积累了大量 Rust 经验,例如 Pingora 与内部代理框架 Oxy。Rust 的静态类型系统与所有权模型能够在编译期捕获许多传统上在运行时才暴露的内存与并发问题,从根本上降低空指针、数据竞争与内存破坏等高风险缺陷的发生概率。在大规模分布式系统中,每秒钟处理的请求数量巨大,每次微小的性能提升都能放大为可观的用户体验改进或成本节省。
因此将核心逻辑迁移到 Rust,既是为性能,也是为长期可维护性和安全性做投资。 在具体实现上,Cloudflare 并非直接在裸 Rust 之上逐行重写原有逻辑,而是基于 Oxy 框架构建名为 FL2 的全新平台。Oxy 提供了高性能代理所需的异步运行时、协议解耦以及可扩展的拦截点,能在网络层到应用层之间进行灵活处理。除此之外,Oxy 自带的监控、动态配置与平滑重启能力降低了运维复杂度,使得团队可以集中精力在产品逻辑而非基础设施细节上。FL2 在设计时强调模块化与明确的契约,所有产品逻辑被拆分为不可进行 IO 的模块单元,每个模块由一组固定的阶段、输入与输出组成,模块之间通过显式的"模块值"进行数据交换。这种模式在编译期就能检查模块接口是否匹配,从而大幅降低不同功能之间无意交互带来的副作用。
模块化带来的直接好处之一是按需执行。FL1 的实现往往需要在每次请求中评估大量逻辑,导致请求路径变长且不可预测。FL2 通过过滤器确定哪些模块应在某类请求中运行,从而避免为每个请求执行所有产品逻辑,将不必要的工作从请求路径中移除。更少的计算意味着更低的 CPU 与内存占用,Cloudflare 内部数据显示 FL2 在资源使用上相较于旧系统下降明显,从而释放出更多计算能力用于支撑新功能或降低成本。 除性能外,服务可用性在边缘系统中至关重要。对于长连接场景,例如 WebSocket、实时流媒体或长轮询,传统的进程重启会导致连接被强制中断,对用户体验产生直接影响。
借助 Oxy 内置的平滑重启功能以及 systemd 的 socket activation,Cloudflare 能够在部署新版本时让旧进程停止接受新连接但继续处理现有连接,直至自然结束。与此同时,socket 的生命周期与进程解耦,异常重启时不会出现"连接被拒绝"的短暂窗口。这种设计显著提升了在不断更新软件的同时保持稳定连接的能力。 工程上,如何在不影响日常产品开发的前提下将庞大的生产系统迁移到新平台是核心挑战之一。Cloudflare 采用了渐进式的迁移策略:先在旧系统中加入能够调用 Rust 模块的适配层,使得各产品团队可以逐步用 Rust 实现业务逻辑并在旧平台中替换相关 Lua 代码。这样,团队无需同时维护两套并行逻辑,也可以在保留现有节奏的同时逐步完成迁移。
为了验证新实现的行为与旧系统一致性,Cloudflare 构建了名为 Flamingo 的测试框架,允许并发运行成千上万条端到端测试请求,自动比较 FL1 与 FL2 在功能与性能上的表现。配合自动化的分阶段流量释放与健康检测,系统会在发现问题时自动暂停或回滚,从而在大规模部署中将风险控制在最低范围。 此外,为了应对尚未覆盖或无法处理的边界场景,FL2 设计了回退机制。在处理不了某些请求或遇到未知配置时,FL2 会将流量回退到旧的 FL1 系统,直接按字节级别交由旧系统继续处理。这个方法既允许在迁移早期将实际流量导入新平台以收集真实运行数据,也让工程团队在增量实现功能后通过对比回退结果来验证新逻辑的正确性。这种并行验证能力是大规模替换遗留系统时尤为宝贵的安全阀。
渐进式上线的策略从免费客户开始,随后扩展到付费客户并与大型用户协同推进,这样的顺序既能在低风险环境下观察系统行为,也能在需要时得到有偿客户的实时反馈。Cloudflare 通过监控两个关键趋势图来衡量迁移进度:被路由到 FL2 的流量比例上升,以及由 FL2 引发回退到 FL1 的比例下降。随着模块覆盖率逐步提升和错误率下降,二者走势呈现理想方向,最终目标是在全面迁移完成后关闭老旧的 FL1 系统。 在外部性能评估上,Cloudflare 引用了内部指标与第三方 CDNPerf 的结果,显示在全国范围内的中位延迟减少了约 10 毫秒,同时整体性能提升约 25%。这样的改进对用户体验尤为关键,尤其是在移动网络、边缘场景或对延迟敏感的 API 请求中,十毫秒级的提升会带来更流畅的页面加载、更短的接口等待时间以及更稳定的实时连接表现。更高的处理效率也意味着相同硬件下能支持更多并发请求或在成本相同的前提下提高集群容量。
安全性方面,Rust 的类型与所有权系统并非银弹,但在避免常见内存错误方面确有显著优势。Cloudflare 在 FL2 中把模块边界与数据流契约写入编译时检查,结合严格的 lint、测试与代码审查流程,减少了因不规范或危险代码导致的崩溃与漏洞引入概率。工程实践上,任何无法解释的崩溃仍然会被作为高优先级事件处理,而目前观察到的新错误更多与硬件相关而非内存安全缺陷,这从侧面说明了语言选择带来的风险降低效果。 从组织层面看,迁移到 Rust 与模块化架构也提升了工程效率。模块化让不同团队可以在不相互干扰的前提下独立演进功能,明确接口减少了跨团队联调成本。Oxy 提供的可复用基础设施让团队不必重复实现监控、配置热加载或回滚逻辑,能把精力放在业务创新。
Cloudflare 表示,在 FL2 上新产品或变更的交付时间从以前的数周缩短到了 48 小时左右,这种速度上的提升将直接促进产品迭代与更快地响应安全漏洞或性能问题。 展望未来,Cloudflare 计划在接下来的时间里完成剩余核心组件的 Rust 重写工作,特别是位于请求路径更前端的 HTTP 与 TLS 终止服务。完成全部模块的迁移后,Cloudflare 将进入真正的优化阶段,不仅会进一步简化模块连接方式,还会扩展对非 HTTP 流量、RPC 与流式协议的支持,挖掘更多边缘计算场景的优化空间。对于希望投身这种工程转型的开发者与运维工程师,Cloudflare 也借机发布招聘信息,吸引具备分布式系统、网络协议与 Rust 开发经验的人才加入。 对用户而言,这次重构的直接意义是更快的页面加载、更稳定的实时连接、更低的回源成本以及更迅速的产品响应与修复能力。对于行业而言,Cloudflare 的实践提供了一个样本,显示在大规模互联网基础设施中采用现代系统语言与严格的模块化设计能带来可观的性能、安全与工程效率改进。
最终,网络性能的每一分提升都能累积为更好的用户体验与更可靠的服务,这正是 Cloudflare 所追求的目标。 总结来看,Cloudflare 用 Rust 重建网络大脑既是技术层面的进化,也是工程文化与流程的优化。通过 Oxy 框架、严格的模块契约、平滑重启与渐进式迁移策略,Cloudflare 在保证可用性的同时实现了显著的性能与安全提升。随着剩余组件完成迁移,用户将逐步享受到更低延迟、更高稳定性与更快的产品迭代速度,而这场以 Rust 为核心的工程变革也为整个行业提供了值得借鉴的经验。 。