Dados essenciaisTrabalho em segundo plano

Streaming de eventos

Streams de eventos append-only com grupos de consumidores, confirmações e recuperação automática das mensagens que um consumidor deixou para trás ao cair.

log append-only
Durável
grupos de consumidores por stream
N
mensagens perdidas em uma falha
0
Etapa 1 de 5
Publique um evento

O serviço de pedidos anexa um evento e recebe o id de volta.

Sessão de exemploplaying
# Publique um evento
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.

O problema

Os serviços que reagem a eventos precisam de mais do que uma fila. Vários consumidores independentes querem os mesmos eventos, cada grupo de consumidores precisa dividir o trabalho entre instâncias e, quando uma instância morre com mensagens em mãos, alguém precisa perceber e assumi-las.

Como o HotKV resolve

Um stream é um log append-only. Cada grupo de consumidores o lê de forma independente, entrega cada mensagem a um membro do grupo e a mantém pendente até que esse membro a confirme. XAUTOCLAIM passa as mensagens pendentes há tempo demais para um consumidor saudável.

Passo a passo

O que acontece, comando por comando

  1. 01

    Publique um evento

    O serviço de pedidos anexa um evento e recebe o id de volta.

    XADD orders * type created order 1182 total 49.00
  2. 02

    Dois grupos, um stream

    Cobrança e envio têm cada um o próprio grupo, e cada um recebe o evento.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Consuma

    Uma instância de cobrança lê as mensagens novas do seu grupo, bloqueando até chegar alguma coisa.

    XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >
  4. 04

    Confirme

    Assim que a fatura é criada, a cobrança confirma e a mensagem sai da sua lista de pendentes.

    XACK orders billing 1790985600123-0
  5. 05

    Recupere-se de uma falha

    Uma instância de envio morreu segurando mensagens. Depois de 60 segundos ociosas, elas são assumidas por uma instância saudável.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Onde se encaixa

Cenários reais

Pipelines de pedidos

Os pedidos fluem para cobrança, envio e análise, e cada um lê o mesmo stream no próprio ritmo.

Feeds de auditoria e atividade

As ações dos usuários são anexadas a um stream e reproduzidas por qualquer serviço que precise do histórico.

Ingestão de IoT

As mensagens dos dispositivos ficam em buffer nos streams e são processadas por um grupo de workers que escala com a carga.

Integrado

O que você ganha

Log append-only

As entradas recebem ids ordenados no tempo e podem ser aparadas por tamanho ou idade.

XADDXTRIM

Grupos de consumidores

Cada grupo recebe todas as mensagens e divide o trabalho entre os seus membros.

XGROUPXREADGROUP

Confirmações

As mensagens ficam pendentes até serem confirmadas.

XACKXPENDING

Recuperação automática

As mensagens ociosas por tempo demais são assumidas por outro consumidor.

XAUTOCLAIMXCLAIM

Perguntas frequentes

Posso reproduzir eventos antigos?

Sim. XRANGE lê qualquer parte do stream por id, e um grupo de consumidores novo pode começar do início.

Como evito que um stream cresça para sempre?

Apare-o com XTRIM ou com a opção MAXLEN ou MINID do XADD.

O XADD consegue evitar eventos duplicados?

O XADD aceita ids de produtor idempotentes (IDMP), então uma publicação repetida não cria uma segunda entrada. Veja a referência do XADD.

Casos de uso relacionados

Experimente com a sua própria carga de trabalho

O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.