如果我告诉你……你可以从 Cloudflare 后面运行一个网站并且每天只有 385 个请求错过了它们的缓存并通过原始服务怎么办?
没什么大不了的,除非……那是在同一时期总共超过 166M 的请求中:
是的,我们刚刚在 Pwned 密码上达到了 99.999% 的缓存命中率的“五个九”。实际上,它是 99.9998%,但我们现在正处于分裂头发的地步,让我们谈谈我们如何设法让一百万个请求中只有两个命中源,从一些历史开始:
优化 Pwned 密码缓存(与 Worker 一起)- @troyhunt – https://t.co/KjBtCwmhmT pic.twitter.com/BSfJbWyxMy
– Cloudflare (@Cloudflare) 2018 年 8 月 9 日
啊,回忆?那时候,Pwned Passwords 在一个月内处理的请求比我们现在一天处理的请求少得多,缓存命中率约为 92%。换句话说,不是每百万个请求中有 2 个到达源,而是 85k。我们对此很满意!随着岁月的流逝,流量增长,缓存模型得到优化,因此我们的统计数据得到改善:
就是这样 – Pwned Passwords 现在每月处理超过 2 * 十亿 * 次请求,一天中达到 9159 万次的峰值,缓存命中率为 99.52%。全部免费,开源,供社区使用? pic.twitter.com/DSJOjb2CxZ
– 特洛伊亨特 (@troyhunt) 2022 年 5 月 24 日
这几乎就是我们趋于平稳的地方,大约在 99% 左右。我们对此非常满意,因为现在每百万请求中只有 5k 个请求到达源头。由于缓存的瞬态特性和逐出标准不可避免地意味着某个地方的 Cloudflare 边缘节点需要返回到原始网站并提取数据的新副本,因此该标记周围肯定会有一个数字。但是,如果除非明确指示,否则 Cloudflare 永远不必这样做怎么办?我的意思是,如果它只是留在他们的缓存中,除非我们实际更改了源文件并告诉他们更新他们的版本怎么办?欢迎使用Cloudflare Cache Reserve :
好的,所以我可能已经注释了重要的一点,但这就是它的感觉 – 神奇 – 因为你只需打开它……就是这样。您仍然以相同的方式提供您的内容,您仍然需要适当的缓存标头,并且您仍然拥有与以前相同的分层缓存,但现在在它和您的源之间有一个“缓存保留”。它由 R2 支持,这是他们的持久数据存储,您可以将缓存的内容保存在那里,只要您愿意。但是,根据之前的链接,它不是免费的:
您根据存储了多少、存储了多长时间、写入了多少以及读取了多少来付费。让我们用实际的术语来说,只是作为一个简短的复习( 这里是更长的版本),请记住 Pwned Passwords 本质上只是 16^5(刚刚超过 100 万)个文本文件,每个文件大约 30kb,用于 SHA-1 哈希和类似的数字对于 NTLM 的(尽管文件大小略小)。以下是过去 9 天的缓存保留使用情况统计信息:
我们现在可以用它做一些非常简单的数学运算,并假设 9 天,这就是我们得到的:
每天 2 美元 ? 但是在这段时间里,这已经从我的原始服务中减少了近 1600 万个请求,所以我没有为Azure Function执行(便宜)和出口带宽(不便宜)付费。但是,为什么在 9 天内只有 1600 万次读取操作,而早些时候我们在一天内看到了 16700 万次 API 请求?因为如果您向上滚动到“在此处插入魔法”图,缓存保留只是一个后备位置,大多数请求(即其中的 99.52%)仍然由边缘缓存提供服务。
另请注意,有将近 1M 的写入操作,这有两个原因:
- 当请求进入并错过边缘缓存时,缓存预留被源数据播种。这意味着我们的缓存命中率将变得非常非常好,因为甚至不到一半的潜在可缓存 API 查询都在缓存保留中。这也意味着每天 48 美分的费用将会大幅下降?
- 每次FBI 向服务提供新密码时,受影响的文件都会从缓存中清除。这意味着随着数据流向边缘缓存并对原始服务进行相应的命中,将始终存在写入操作,当然还有读取操作。所有这一切的普遍性取决于联邦调查局输入的数据量,但在他们输入新密码时数据永远不会变为零。
无数企业依赖 Pwned Passwords 作为其注册、登录和密码重置流程的组成部分。说真的,这个数字是“不为人知”的,因为我们不知道谁在实际使用它,我们只知道该服务在过去 30 天内被点击了 3 次又 25亿次:
让服务的消费者相信它不仅具有高度的弹性,而且速度非常快,这对于采用至关重要。反过来,更多的采用有助于推动更好的密码实践、更少的帐户接管和更多的微笑?
当那些剩余的哈希前缀填充缓存保留时,请注意“cf-cache-status”响应标头。如果您曾经看到“MISS”的值,那么恭喜您,您真的是百万分之一!
全面披露:Cloudflare 免费为 HIBP 提供服务,他们帮助启动和运行 Cache Reserve。然而,他们并不知道我正在写这篇博文,并且现场完整阅读它是第一个看到它的人。惊喜! ?
原文: https://www.troyhunt.com/to-infinity-and-beyond-with-cloudflare-cache-reserve/