使大量清漆对象无效的最佳方法



我正在开发一个类似API网关的服务器,它支持用户和组。

我有一个类似如下的API端点:

/authorization/users/1?resource=users

基本上,它在问"这个用户1可以访问'users'吗?"

我想缓存"/authorization/users/1? "resource=users

权限包括用户级别和组级别。每个用户至少属于一个组。

用户级缓存失效很容易,因为我只需要向单个URL发送PURGE请求。

当涉及到组时,情况很复杂。一个组可以有50000个以上的用户。如何使这些用户无效?

查看https://www.varnish-software.com/blog/advanced-cache-invalidation-strategies,使用X-Article-ID可能是一个很好的解决方案。我担心的是……它如何处理大量对象?会有大量的CPU使用吗?它处理50000个对象的速度有多快?

有更好的方法吗?

使用清漆禁令将把您想要禁止的请求放入清漆禁令列表中。检查每个请求是否在禁止列表中。

如果对象在清漆缓存中,时间戳比禁止列表中的项更早。然后条目将从缓存中删除,并从后端请求一个新的副本。

在此清漆之上还使用了一个称为"禁止潜伏者"的过程,该过程主动从清漆缓存中删除禁止列表中的项目。如何快速完成这可以配置,有关这方面的更多信息,请查看https://www.varnish-software.com/blog/ban-lurker

就我个人而言,当使用这种类型的清漆禁令时,我没有任何cpu和内存使用问题。但这一切都取决于一个项目被添加到禁止列表的频率,以及你使用的禁止页面的正则表达式有多高级。

相关内容

  • 没有找到相关文章

最新更新