写点什么

Cloudflare 用 Rust 重写核心系统:CDN 性能提升 25%,响应时间缩短 10 毫秒

  • 2025-11-09
    北京
  • 本文字数:1147 字

    阅读完需:约 4 分钟

大小:573.06K时长:03:15
Cloudflare 用 Rust 重写核心系统:CDN 性能提升 25%,响应时间缩短 10 毫秒

Cloudflare 近日宣布,已将公司核心子系统之一用 Rust 语言重写,实现响应时间缩短 10 毫秒、整体性能提升 25%。公司同时强调,Rust 不仅提升了系统性能,还增强了安全性,并缩短了开发周期。


在成功将 Pingora 子系统迁移至 Rust 之后,Cloudflare 的工程师决定从零开始重写公司最老、也是最关键的组件之一——FL,即“Cloudflare 的大脑”:

FL 是 Cloudflare 的中枢。当一个请求到达 FL 后,我们会在网络中运行各种安全与性能功能。它会应用每个客户独有的配置和设置,从执行 WAF(Web 应用防火墙)规则、DDoS 防护,到将流量路由至开发者平台和对象存储服务 R2。


Cloudflare 的架构师们决定基于公司内部开发的代理框架 Oxy 来构建新一代系统 FL2。Oxy 支持监控、软重载、动态配置加载与切换等功能。


尤其值得一提的是,Oxy 的内建“平滑重启”机制对代理系统至关重要。传统方式中,终止进程会导致所有活跃连接被强制中断;而 Oxy 则在需要关闭实例时,会停止接收新连接,但继续为现有连接提供服务,直到它们自然结束,从而实现无中断过渡。


对 Cloudflare 架构师而言,最大的挑战之一是:如何替换一个支撑了公司 15 年、仍在持续演进的运行系统。为了避免团队必须为旧版(基于 LuaJIT 的 FL)和新版(基于 Rust 的 FL2)各自重复开发功能,他们在 FL 内部创建了一个中间层,使得为 FL2 编写的 Rust 模块也能在旧系统中无缝运行。

这样一来,各团队无需维护两套逻辑,可以直接用 Rust 实现新功能,并逐步替换旧的 Lua 逻辑,而无需等待整个系统彻底迁移完成。


为了确保迁移过程顺利,Cloudflare 的架构师还制定了明确的测试与发布策略。测试环节使用名为 Flamingo 的系统,可同时对 FL1 与 FL2 发起上千次端到端测试请求。每次更新都会逐步上线,在不同阶段接受递增流量测试与性能基准对比,以确保性能与资源使用保持在可接受范围内。


另一个关键机制是 FL2 的回退机制。当 FL2 无法处理某个请求时,它会将该请求交给旧系统 FL1 处理。得益于这一机制,Cloudflare 能够在不影响整体稳定性的前提下,逐步增加 FL2 的实际流量占比。随着 FL2 的成熟,它处理的请求量持续上升,而回退至 FL1 的比例则相应下降。


Cloudflare 架构师指出,构建 FL2 的最大收益来自性能提升。这主要源于两方面:一是 FL2 完全使用高性能语言 Rust 编写,而不再像 FL1 那样混合使用 C、Rust 与 Lua;二是旧系统 FL1 在多语言间进行数据转换时耗费了大量时间。得益于此,FL2 仅需原系统一半的 CPU 资源,内存占用也不到一半。


此外,FL2 还从 Rust 的编译时安全机制中获益良多。Rust 严格的静态检查、代码规范、全面测试和严格的代码审查流程,使系统在运行过程中极少出现崩溃问题。目前报告的大部分故障都与硬件故障有关。


原文链接:

https://www.infoq.com/news/2025/10/cloudflare-rust-proxy/

2025-11-09 20:593

评论

发布
暂无评论

SuperBenchmarker sb在mac上的安装手记

edd

真实字节二面:什么是伪共享?

艾小仙

Java 程序员 字节跳动 面试

算力挖矿系统开发|算力挖矿软件APP开发

系统开发

从0到1建立软件测试质量体系

程序员阿沐

软件测试 测试工程师 质量保证

四面美团开发岗,成功斩获offer,分享个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

#滴滴夜莺# Nightingale & Prometheus

漂洋散人

Serverless 如何在阿里巴巴实现规模化落地?

阿里巴巴云原生

阿里巴巴 Serverless 容器 微服务 云原生

一线互联网大厂面经分享:阿里三面+头条四面+腾讯二面+美团四面

Java架构之路

Java 程序员 架构 面试 编程语言

打破垄断 上海发布自主研发树图区块链重大成果

CECBC

区块链

想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

梦想橡皮擦

Python 28天写作 2月春节不断更 3月日更

前端上手Docker超详细基础教程

1024肥宅

Docker Linux 大前端 jenkins CI/CD

数据库周刊59丨GaussDB(for openGauss)开放商用;人大金仓保障冬奥会演练顺利完成;MDL锁导致的MySQL问题分析;PG日志使用手册;达梦表空间查询;数据库笔试题面试题集……

墨天轮

MySQL 数据库 程序员 运维 postgre

技术解析 | Doris Compaction机制解析

百度开发者中心

百度 apache doris

Vim,人类史上最好用的文本编辑器

沉默王二

vim 开发工具 vim教程

#集赞送好礼#百度大脑AI开放平台的2020年

百度大脑

第四章作业(二)

LouisN

浅谈基于ARP协议的网络攻击

行者AI

网络安全

图解CyclicBarrier运动员接力赛

叫练

面试 AQS CyclicBarrier

「两次遍历」要比「一次遍历」要慢 ... 为啥呀?为啥呀??

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

Kubernetes 稳定性保障手册 -- 极简版

阿里巴巴云原生

云计算 容器 开发者 云原生 k8s

Pgbouncer最佳实践:系列一

PostgreSQLChina

数据库 postgresql 软件 开源社区

2021备战金三银四血拼一波算法:字节+百度+美团+网易+拼夕夕+腾讯+滴滴

比伯

Java 编程 程序员 架构 面试

别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)

刘悦的技术博客

ruby ruby-on-rails rubygems macOS Big Sur m1

智慧党建管理系统,智慧组工平台开发方案

13530558032

环信大学 | 构建一套适合微服务的高可用架构

DT极客

接口测试--apipost中cookie管理器的使用

测试人生路

接口 Cookie

887页Java面试“成神”手册,已助朋友狂砍9个一二线大厂Offer

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

2021最新京东、字节跳动「3面面经」盘点大厂后端面试高频题

Java架构之路

Java 程序员 架构 面试 编程语言

七种分布式事务的解决方案,一次讲给你听

moon聊技术

程序员成长第十七篇:项目转测

石云升

项目管理 程序员 28天写作 3月日更

区块链农产品溯源平台,农产品区块链防伪

13530558032

Cloudflare 用 Rust 重写核心系统:CDN 性能提升 25%,响应时间缩短 10 毫秒_软件工程_Sergio De Simone_InfoQ精选文章