Acceso rápido a un conjunto de hash en Varnish

Acceso rápido a un conjunto de hash en Varnish

Estoy desarrollando un canal de Varnish que sirve a una combinación de recursos públicos y restringidos.

Dado que el acceso a los recursos públicos constituye la gran mayoría (>99,9 %) del tráfico, quiero crear atajos para evitar la validación del token de autenticación y otras cosas similares para recursos no restringidos, o mejor aún, pasar solo por la autenticación N/Z. ruta si el recurso está en una especie de lista negra.

Esta lista negra puede contener hasta aproximadamente 1 millón (en los próximos años) de entradas UUID4. Un archivo de este tipo en texto plano ocupa aproximadamente 3,7 Gb en el disco, por lo que una máquina con buena capacidad de RAM debería poder mantenerlo todo en la memoria.

Mi pregunta es sobre cómo implementar esta lista negra para que las búsquedas sean muy rápidas. Pensé en un conjunto de hash "nativo", Memcached o métodos similares. Es muy probable que Memcached ralentice las cosas si se distribuye. ¿Alguien ha implementado un enfoque similar? ¿Qué herramientas tiene Varnish a mi disposición?

Respuesta1

En Varnish no tienes acceso directo al hash de un objeto.

Sin embargo, como indicó, podría almacenar una lista de recursos restringidos en un almacén de valores-clave.

KVStore en Varnish Enterprise

Cuando hablamos de pura velocidad de ejecución,Varnish Enterprise tiene un módulo KVStore. EsteTienda KVse guarda en la memoria local y se puede reconstruir a partir de un archivo cuando se produce un reinicio.

Varnish Enterprise no es gratuito y requiere la compra de una clave de licencia. Si desea una barrera de entrada más baja para la versión empresarial, existen imágenes oficiales de la máquina de Varnish Enterprise en AWS, Azure, GCP y OCI. Tanto para Ubuntu como para Red Hat. No paga ninguna licencia por adelantado y se le cobra por hora. Verhttps://aws.amazon.com/marketplace/pp/B07L7HVVMF?ref_=srh_res_product_titlepara ver un ejemplo en AWS

El VMOD de Redis

SiEmpresa de barnizno es para ti, también puedes usarRedis VMOD de Carlos Abalde. Es gratis, de código abierto y hace su trabajo bastante bien.

Incluso puedes correrLUAscripts dentro de VCL para ejecutar una lógica más compleja desde Redis.

Si tiene miedo de que Redis lo ralentice, puede limitar la cantidad de conexiones e incluso asegurarse de que la conexión sea compartida.

información relacionada