Cloudflare将每天90亿次请求的JavaScript CDN迁移到其开发者平台
Cloudflare 已经将cdnjs完整迁移到其开发者平台,用 Workers、R2、Workflows、Queues、Durable Objects、KV 和 Containers 替换了分布在 Cloudflare 与 Google Cloud Platform 上的发布基础设施。迁移还将 R2 设置为已发布包文件的权威来源,同时保留了现有的 URL、包内容和子资源完整性(Subresource Integrity,SRI)哈希。
Cloudflare表示,cdnjs 当前大约每天处理 90 亿次请求,平均在超过 330 个 Cloudflare 数据中心中每秒约 108,000 次请求。该服务报告缓存命中率为 98.6%,约 12%的网站使用 cdnjs。Cloudflare 将此次迁移描述为在广泛使用的公共服务规模上对其开发者平台进行内部验证(dogfooding)的示例。
此次迁移基于 2020 年的一次架构调整,Cloudflare 当时将 cdnjs 的文件服务迁移到了Workers和Workers KV,在常规流量下替代了专用源服务器,同时保留外部源作为回退方案。Cloudflare 还引入了预压缩的 Brotli 和 gzip 资源以提高传输效率。
然而,发布路径一直保持着分散的状态:Google Cloud Functions 定期检查 npm 以获取发布包、Google Cloud Storage 存储包、Pub/Sub 负责消息传递,并且有一台运行 git-sync 的虚拟机同步仓库内容。系统使用 26 个按字母分片的 Cloud Functions 来监控包更新。与此同时,GitHub 仓库的 packed 存储已超过 1.1 TB,而已发布的文件在 GitHub 和 KV 中都有表述。

先前的 cdnjs 发布与服务架构(