Быстрый доступ к хэш-набору в Varnish

Я разрабатываю конвейер Varnish, который обслуживает как общедоступные, так и ограниченные ресурсы.

С момента доступа. к общедоступным ресурсам составляет подавляющее большинство (> 99,9%) трафика, я хочу создать ярлыки для обхода проверки токена аутентификации и других подобных вещей для неограниченных ресурсов - или еще лучше, пройти только путь authN / Z, если ресурс находится в своего рода черном списке.

Этот черный список может содержать до 1M (в течение следующих нескольких лет) записей UUID4.Такой файл в виде обычного текста занимает на диске около 3,7 ГБ, поэтому машина с хорошим объемом оперативной памяти должна иметь возможность хранить все это в памяти.

Мой вопрос заключается в том, как реализовать этот черный список, чтобы поиск происходил очень быстро. Я думал о «родном» наборе хешей, или о Memcached, или о подобных методах. Распространение Memcached, скорее всего, замедлит работу. Кто-нибудь реализовал подобный подход? Какие инструменты есть в Varnish?

0
задан 26 August 2020 в 03:50
1 ответ

В Varnish у вас нет прямого доступа к хешу объекта.

Однако, как вы указали, вы можете хранить список ресурсов с ограниченным доступом в хранилище пар "ключ-значение".

KVStore в Varnish Enterprise

Если говорить о чистой скорости выполнения, Varnish Enterprise имеет модуль KVStore. Этот KVStore хранится в локальной памяти и может быть восстановлен из файла при перезапуске.

Varnish Enterprise не бесплатна и требует приобретения лицензионного ключа. Если вам нужен более низкий порог входа для корпоративной версии, существуют официальные образы машин Varnish Enterprise на AWS, Azure, GCP и OCI. Как для Ubuntu, так и для Red Hat. Вы не платите за лицензию заранее, и вы платите по часам. См. https://aws.amazon.com/marketplace/pp/B07L7HVVMF?ref_=srh_res_product_title для примера на AWS

Redis VMOD

Если Varnish Enterprise не для вас, вы также можете использовать Redis VMOD Carlos Abalde. Он бесплатный, с открытым исходным кодом и неплохо справляется со своей задачей.

Вы можете повторно запускать скрипты LUA внутри VCL, чтобы запускать более сложную логику из Redis.

Если вы боитесь, что Redis будет замедлять вашу работу, вы можете ограничить количество подключений и даже сделать подключение общим.

1
ответ дан 26 August 2020 в 08:32

Теги

Похожие вопросы