Cloudflare 最近把 cdnjs 的底层架构整个翻新了一遍,发布和服务链路都搬到了自家开发者平台上。新的方案用 R2 做权威存储,Workers 处理请求,KV 存元数据,整套系统现在每天要扛下约 90 亿次请求。这次调整不只是让 cdnjs 跑得更顺,也给企业上云提供了一个真实的参考案例。
老架构的问题出在哪
2020 年那回调整,Cloudflare 虽然把 cdnjs 的文件服务挪到了 Workers 和 Workers KV 上,但发布路径依然绕。Google Cloud Functions、Google Cloud Storage、Pub/Sub 都在链路里,另外还留了一台跑 git-sync 的虚拟机来同步仓库。组件一多,维护成本就上来了,发布一个新版本要经过好几道工序,链路一长,出问题的概率也跟着变大。
新架构:全面迁移到 Cloudflare 开发者平台
这次迁移可以说是彻底换了副骨架。Cloudflare 把 cdnjs 的发布基础设施和服务基础设施都收拢到了自家开发者平台,核心部件包括 Workers、R2、Workflows、Queues、Durable Objects、KV 和 Containers。R2 现在作为已发布包文件的权威存储,原来那些 URL、文件内容还有 SRI 哈希,全都保持原样。用户不需要做任何改动,CDN 服务照常运转,只是背后引擎已经换了。
具体分工上:Workers 负责接收和处理请求,Workers Cache 充当缓存层,KV 用来存元数据、版本号和 SRI 哈希。万一从 R2 取不到文件,还有 DigitalOcean Spaces 镜像兜底。包摄取这块由 Workflows 编排,定时触发工作流去检查 npm 和 GitHub 上的发布,把包下载到 R2,再为每个文件启动处理流程。整个流程涵盖了提取、压缩、存储、更新 KV 元数据和刷新搜索索引,并且支持从失败点继续,不用每次都从头跑一遍。
为什么压缩任务交给了 Containers?
有个细节挺值得琢磨。压缩这一步没有直接在 Workers 里做,因为现有压缩算法得把整个库先缓冲到内存里,Workers 目前的运行环境不适合这么干。Cloudflare 于是改用 Containers 来处理压缩,同时也在研究流式压缩方案,等以后条件成熟了再迁回 Workers。这也说明架构设计不是死抱着某个组件不放,而是看哪个工具适合就上哪个。
面对超高规模请求的压力
cdnjs 的体量并不小。它现在日均处理约 90 亿次请求,平均每秒约 10.8 万次,覆盖 330 多个数据中心,缓存命中率高达 98.6%。粗略估计,全球大约 12% 的网站都在用 cdnjs。这么大的流量,迁移过程稍有不慎就可能出大事。Cloudflare 敢动这个刀子,一方面是对自家平台有底气,另一方面也确实通过这次迁移把平台的能力上限又推高了一截。
平台限制的大幅放宽
为了撑住 cdnjs 这种量级,Cloudflare 顺手改了好几个平台限制。Worker 子请求上限从 1,000 提到了 1,000 万,Workflow 步骤上限从 1,024 提升到了 10,000,而且还能配置到最多 25,000。这些数字对普通开发者来说可能平时根本碰不到,但放到大型项目里,往往就是行不行的分界线。
给企业带来的启发
这次迁移不只是 Cloudflare 内部的一次技术升级,对那些正在规划上云的公司来说也有借鉴意义。一个系统要跑得稳,重点不是组件用得多不多,而是职责清不清楚:存储、计算、缓存、编排各管一摊,别搅在一起。如果你也在琢磨云服务器 ECS 的选型,或者想了解阿里云优惠,可以找阿里云代理商聊聊,他们通常能帮企业拿到更合适的方案。领一张阿里云代金券,也能把前期成本往下压一压。像 cdnjs 这种日均 90 亿请求的场景都能靠一套统一平台扛下来,普通业务上云完全不用太担心性能不够。
如果你想进一步研究 Cloudflare 的架构思路,也可以咨询专业的服务商。比如 易枫顺 - 阿里云官方旗舰级代理商,在云资源规划和架构落地方面能提供不少帮助。
FAQ
Q: cdnjs 迁移后,原有的文件 URL 会变吗?
A: 不会。迁移后 R2 成为权威存储,但原有 URL、文件内容和 SRI 哈希都保持不变,用户完全无感知。
Q: cdnjs 现在每天大概处理多少请求?
A: 日均约 90 亿次,平均每秒约 10.8 万次,覆盖 330 多个数据中心,缓存命中率 98.6%,大约 12% 的网站使用 cdnjs。
Q: 压缩工作为什么不用 Workers 做?
A: 因为现有压缩算法需要把整个库缓冲到内存,Workers 目前跑不了。Cloudflare 用 Containers 完成压缩,同时也在探索流式支持,未来可能迁回 Workers。
关于易枫顺
深圳市易枫顺网络科技有限公司是阿里云官方旗舰级代理商。提供云服务器ECS、云数据库RDS、对象存储OSS等阿里云全系产品官方特惠折扣与代金券申请,以及多云成本优化、企业上云一站式服务。客服热线:19520841949 - 易枫顺
来源:InfoQ