counter: Contador sin bloqueo para nginx-module-lua
Instalación
Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.
CentOS/RHEL 7 o Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-counter
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-counter
Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.
Este documento describe lua-resty-counter v0.2.1 lanzado el 09 de abril de 2020.
Cuando el número de trabajadores aumenta, la penalización de adquirir un bloqueo se vuelve notable. Esta biblioteca implementa un contador sin bloqueo que realiza la operación de incremento en la VM Lua del trabajador. Cada trabajador sincroniza su contador local con un diccionario compartido a tiempo.
API
counter.new
sintaxis: c, err = counter.new(shdict_name, sync_interval?)
Crea una nueva instancia de contador. Toma el primer argumento como el nombre del diccionario compartido en
forma de cadena. Y un segundo argumento opcional como el intervalo para sincronizar el estado local con
el diccionario compartido en número. Si se omite el segundo argumento, el contador local no se sincronizará
automáticamente, el usuario es responsable de llamar a counter:sync en cada trabajador.
counter.sync
sintaxis: ok = counter:sync()
Sincroniza el contador local del trabajador actual con el diccionario compartido. No es necesario si un contador es
creado con sync_interval no establecido en nil.
counter.incr
sintaxis: counter:incr(key, step?)
Aumenta el contador de la clave k con un paso de step. Si se omite step, por defecto es
1.
counter.reset
sintaxis: newval, err, forcible? = counter:reset(key, number)
Restablece el contador en el diccionario compartido con una disminución de number. Esta función es un envoltorio de
ngx.shared.DICT:incr(key, -number, number), por favor consulta la
documentación de lua-nginx-module
para los valores de retorno.
counter.get
sintaxis: value = counter:get(key)
Obtiene el valor del contador del diccionario compartido.
counter.get_keys
sintaxis: keys = counter:get_keys(max_count?)
Obtiene las claves de los contadores en el diccionario compartido. Esta función es un envoltorio de
ngx.shared.DICT:get_keys, por favor consulta la
documentación de lua-nginx-module
para los valores de retorno.
Ver También
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-counter.