Varnish

快速訪問 Varnish 中的雜湊集

  • August 26, 2020

我正在開發一個 Varnish 管道,它為公共資源和受限資源提供服務。

由於對公共資源的訪問佔流量的絕大多數(> 99.9%),我想創建快捷方式來繞過身份驗證令牌驗證和其他此類非受限資源的事情 - 或者更好的是,只通過 authN/Z如果資源在某種黑名單中,則為路徑。

此黑名單最多可包含大約 1M(在未來幾年內)UUID4 條目。這樣的純文字文件在磁碟上佔用大約 3.7Gb,因此具有良好 RAM 容量的機器應該能夠將其全部保存在記憶體中。

我的問題是關於如何實現這個黑名單,所以查找速度非常快。我想到了一個“本機”雜湊集,或者 Memcached,或者類似的方法。如果 Memcached 是分佈式的,它很可能會減慢速度。有沒有人實施過類似的方法?Varnish 有哪些工具可供我使用?

在 Varnish 中,您無法直接訪問對象的雜湊值。

但是,正如您所指出的,您可以將受限資源列表儲存在鍵值儲存中。

Varnish Enterprise 中的 KVStore

當我們談論純粹的執行速度時,Varnish Enterprise 有一個 KVStore 模組。此KVStore保存在本地記憶體中,並且可以在重新啟動時從文件中重建。

Varnish Enterprise 不是免費的,需要購買許可證密鑰。如果您想降低企業版的入門門檻,可以在 AWS、Azure、GCP 和 OCI 上找到 Varnish Enterprise 的官方機器映像。適用於 Ubuntu 和 Red Hat。您無需支付預付費用,而是按小時收費。有關AWS 的範例,請參閱https://aws.amazon.com/marketplace/pp/B07L7HVVMF?ref_=srh_res_product_title

Redis VMOD

如果Varnish Enterprise不適合您,您也可以使用Carlos Abalde 的 Redis VMOD。它是免費的,它是開源的,並且做得很好。

您甚至可以在 VCL 中執行LUA腳本,以在 Redis 中執行更複雜的邏輯。

如果你擔心 Redis 會拖慢你的速度,你可以限制連接數,甚至確保連接是共享的。

引用自:https://serverfault.com/questions/1031504