新用户新用户即享 DNS 与 CDN 免费套餐。立即注册

Yeap CDN 新一代边缘:我们为什么选择 Rust

我们把 CDN 边缘节点换成了基于 Rust 和 Pingora 自研的新版本。这篇文章讲讲它给你的网站带来了什么:更快的连接、秒级生效的配置、更强的隔离与安全。

过去一年,我们把 Yeap CDN 的边缘节点从 OpenResty(nginx + Lua)逐步迁移到了一套用 Rust 编写、基于 Cloudflare 开源框架 Pingora 的自研边缘。目前绝大多数流量已经由新边缘承载,剩余节点正在按计划切换。

这篇文章不讲太多底层细节,主要回答一个问题:换了新边缘,对你的网站意味着什么?

为什么要换

旧架构由 nginx 配置、Lua 脚本、C 模块和嵌入式 JavaScript 四部分拼成。它跑得很快,但每加一个按域名生效的功能,都要在好几层里同时改动;配置写错了也常常不报错,只是悄悄不生效。随着功能越来越多,我们需要一个更统一、更可靠的基础。

我们选择 Rust 有三个原因:

  • 内存安全:缓冲区溢出、悬垂指针这类在 C 代码里最常见的崩溃和漏洞,在 Rust 中从语言层面就被排除了。
  • 强类型配置:每个域名的配置在下发到节点时都会被严格校验,字段拼错或类型不对会被明确拒绝,而不是静默失效。
  • 可测试:整个边缘是一个单一语言的程序,现在由一千多个自动化测试覆盖,每次发布前都会完整运行。

你能直接感受到的变化

更快的连接

新边缘支持 HTTP/3(QUIC),在移动网络和高丢包环境下更稳定。TLS 会话票据在节点重启后依然有效,回访用户可以跳过完整握手,首屏更快。

配置秒级生效

你在控制台修改缓存、防火墙或页面规则后,新配置会在几秒内推送到所有边缘节点,并以原子方式切换:正在处理的请求继续使用旧配置,新请求立即使用新配置,节点不需要重启,也不会中断连接。

精确的缓存控制

缓存键支持按查询参数归一化、排序、白名单和黑名单。清除缓存时可以精确到某个带参数的变体,也可以一次清掉同一路径的全部变体。

边缘上的安全防护

WAF 规则集、限速、Bot 指纹识别和地域 / IP 规则都在边缘执行,恶意请求在到达你的源站之前就会被拦下,每一次拦截都会记录对应的规则,方便排查。

真正隔离的边缘函数

Edge Workers 运行在独立的 WebAssembly 沙箱中,每次执行都有独立的内存和严格的 CPU 时间上限。一个租户的脚本出问题,不会影响其他租户,也不会拖垮节点。

性能怎么样

在模拟真实浏览器的流量下(TLS + HTTP/2 + 压缩),新边缘的吞吐与尾延迟都优于同等配置的 nginx。主要原因是它直接缓存压缩后的内容,命中时不需要再做一次压缩。

为了做到这一点,我们没有把 Pingora 当成黑盒,而是在它的基础上做了深度定制,针对缓存命中这条最热的路径做了专门优化。

平滑迁移,对你透明

新旧边缘使用同一套控制面和同一份配置,日志格式也与原来逐字段一致,所以迁移过程中你不需要做任何改动:域名、证书、缓存规则和防火墙规则都会自动生效。

接下来

新边缘为我们打开了很多以前很难实现的能力。接下来的文章会分别介绍 HTTP/3 与 TLS 会话复用的实现、缓存清除如何做到变体级精确,以及我们的 DNS 是怎样为你的域名分配名称服务器的。

如果你还没有体验过,可以在控制台添加一个站点,CDN 免费版即可使用新一代边缘。

在 Yeap Cloud 上构建

新用户即享 DNS 与 CDN 免费套餐。

免费注册