异步方式缓存请求

异步方式缓存请求

有很多选项可以在 Web 服务器/代理上缓存请求,但我正在寻找一种方法来让传入请求“等待”直到缓存准备就绪,然后使用缓存响应所有排队的请求。

我几乎确信我在一些 Medium 帖子中读到过它,但我找不到它,所以也许这里的一些大师可以指导我走这条路。

更新

感谢@martynas-saint 的评论,我发现我正在寻找的帖子 因此很多资源谈论这个话题,非常感谢!

答案1

Varnish Web 缓存默认会执行此操作 - 这称为请求合并或折叠。要了解更多信息,请查看 -https://info.varnish-software.com/blog/request-coalescing-and-other-reasons-to-use-varnish-as-an-origin-shield

我们会压缩请求,这样您的设置就不会出现这种情况。内容分发中的大坏狼是所谓的“惊群效应”,由大量请求同时到达而引发。想想黑色星期五之类的事情,但是对于 HTTP 请求,系统会被淹没,并完全阻塞传入流量。它要么慢得像爬行一样,要么完全崩溃。实际上,这种情况通常发生在大型在线活动中,例如奥运会、足球比赛,或者黑色星期五。

但是,这种流量通常具有很高的可缓存性,而 Varnish 实现了请求合并(或折叠)以解决这一问题。这个想法非常简单:如果 20 个用户同时请求相同的内容,则只从源站获取一次数据。这其中有不少有趣的技术细节,但今天我不会让你厌烦这些,别担心。重要的是 Varnish 会为您透明地完成所有艰苦的工作,这样惊群就不会践踏您的源站。

这描述了可能的代码解决方案(使用不再积极开发的 Netflix/Hystrix):

https://medium.com/@jacqtrain/the-hystrix-collapser-and-how-it-might-save-your-webservices-85fb183db620

相关内容