counter: Contador sem bloqueio para nginx-module-lua
Instalação
Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Em seguida, você pode prosseguir com os seguintes passos.
CentOS/RHEL 7 ou 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 com o NGINX, certifique-se de que o nginx-module-lua está instalado.
Este documento descreve lua-resty-counter v0.2.1 lançado em 09 de abril de 2020.
Quando o número de trabalhadores aumenta, a penalidade de adquirir um bloqueio se torna notável. Esta biblioteca implementa um contador sem bloqueio que realiza a operação de incremento na VM Lua do trabalhador. Cada trabalhador então sincroniza seu contador local com um dicionário compartilhado de forma oportuna.
API
counter.new
sintaxe: c, err = counter.new(shdict_name, sync_interval?)
Cria uma nova instância de contador. O primeiro argumento é o nome do dicionário compartilhado em formato de string. E um segundo argumento opcional como intervalo para sincronizar o estado local com o dicionário compartilhado em número. Se o segundo argumento for omitido, o contador local não será sincronizado automaticamente, o usuário é responsável por chamar counter:sync em cada trabalhador.
counter.sync
sintaxe: ok = counter:sync()
Sincroniza o contador local do trabalhador atual com o dicionário compartilhado. Não é necessário se um contador for criado com sync_interval não definido como nil.
counter.incr
sintaxe: counter:incr(key, step?)
Aumenta o contador da chave k com um passo de step. Se step for omitido, o padrão é 1.
counter.reset
sintaxe: newval, err, forcible? = counter:reset(key, number)
Redefine o contador no dicionário compartilhado com uma diminuição de number. Esta função é um wrapper de ngx.shared.DICT:incr(key, -number, number), consulte a documentação do lua-nginx-module para valores de retorno.
counter.get
sintaxe: value = counter:get(key)
Obtém o valor do contador do dicionário compartilhado.
counter.get_keys
sintaxe: keys = counter:get_keys(max_count?)
Obtém as chaves dos contadores no dicionário compartilhado. Esta função é um wrapper de ngx.shared.DICT:get_keys, consulte a documentação do lua-nginx-module para valores de retorno.
Veja Também
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-counter.