主要观点:作者花费十多年致力于使“Have I Been Pwned (HIBP)”服务快速且可扩展,通过多种技术手段实现,如将重要服务迁移到 Azure Functions 等。现在的“ pièce de résistance ”是在 Cloudflare 缓存整个数据,大幅缩短请求响应时间、提高可用性并降低成本。详细介绍了数据查询的方式及缓存模型,包括通过网站首页、公共 API 和 k-anonyity 企业 API 进行查询,以及缓存的具体过程和相关处理机制,同时也提到了数据变化时的缓存处理和一些限制,如缓存刷新的成本和困难等,还探讨了在不同查询方式下的效率问题以及对 Cloudflare 构建 API 管理产品的期待。
关键信息:
- 服务多年来不断进化,采用新技巧提升性能和可扩展性。
- 现在将整个数据缓存到 Cloudflare,能大幅缩短请求距离,提高可用性和节省成本。
- 数据查询有多种方式,通过哈希前缀进行 k-anonymity 搜索,可将数据库简化为特定列表进行缓存。
- 缓存数据可能因用户退出公共搜索或新数据泄露而改变,存在全缓存刷新的情况。
- 企业 k-anonymity API 的查询模式有明显规律,缓存对起源 API 有影响。
- 在查询邮箱地址的三种方法中,前两种需在 West US 起源服务中验证 API 密钥,增加延迟负担。
- 对 Cloudflare 构建 API 管理产品有期待,以解决当前的效率问题。
重要细节:
- 作者在澳大利亚黄金海岸写作时,请求 HIBP 服务会先到达 Cloudflare 的边缘节点,之前请求需往返 12000km 多,现在希望数据能在边缘节点缓存。
- 以特定例子说明缓存刷新对请求的影响,如 Finsure 泄露时流量全部导向起源,20 小时后缓存重新填充到 50:50 的命中比。
- 展示不同时间的请求数据图表,体现缓存对起源 API 的影响和流量的变化。
- 提到 Pwned Passwords 服务通过 Cloudflare 缓存储备实现高请求量处理,平均每秒 3900 次请求。
- 作者将在周五早上 06:00 AEST 进行关于此主题的直播,并提供回放链接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。