【问题标题】:Best way to invalidate a large number of Varnish objects?使大量 Varnish 对象无效的最佳方法?
【发布时间】:2015-07-27 18:17:10
【问题描述】:

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

我有一个类似于以下的 API 端点。

/authorization/users/1?resource=users

基本上,它是在询问“这个用户 1 可以访问‘用户’吗?”。

我想在 Varnish 中缓存“/authorization/users/1?resource=users”。

权限可以设置为用户级别或组级别。每个用户至少属于一个组。

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

当涉及到组时,它很复杂。一个组可以有超过 50000 个用户。如何使这些用户失效?

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

有没有更好的方法?

【问题讨论】:

    标签: varnish cache-invalidation


    【解决方案1】:

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

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

    除此之外,还使用了一个名为“ban lurker”的过程,它会主动从 varnish 缓存中删除禁止列表中的项目。可以配置完成的速度,更多信息请查看https://www.varnish-software.com/blog/ban-lurker

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

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2011-09-13
      • 2010-10-04
      • 2014-01-01
      • 2011-08-23
      • 2013-01-22
      相关资源
      最近更新 更多