Pular para conteúdo

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.