Date de bazăLucru în fundal

Streaming de evenimente cu grupuri de consumatori

Streamuri de evenimente append-only, cu grupuri de consumatori, confirmări și recuperare automată a mesajelor lăsate în urmă de un consumator oprit brusc.

jurnal append-only
Durabil
grupuri de consumatori pe stream
N
mesaje pierdute la o oprire bruscă
0
Pasul 1 din 5
Publicați un eveniment

Serviciul de comenzi adaugă un eveniment și primește înapoi id-ul lui.

Sesiune de exempluplaying
# Publicați un eveniment
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

O demonstrație animată cu comenzi HotKV reale și răspunsuri de exemplu. Faceți clic pe orice pas pentru a sări la el. Comenzile și răspunsurile rămân în engleză, exact așa cum le tastați și le vedeți în HotKV.

Problema

Serviciile care reacționează la evenimente au nevoie de mai mult decât o coadă. Mai mulți consumatori independenți vor aceleași evenimente, fiecare grup de consumatori trebuie să împartă munca între instanțe, iar când o instanță se oprește cu mesaje în mână, cineva trebuie să observe și să le preia.

Cum o rezolvă HotKV

Un stream este un jurnal append-only. Fiecare grup de consumatori îl citește independent, livrează fiecare mesaj unui singur membru al grupului și îl ține în așteptare până când membrul îl confirmă. XAUTOCLAIM dă unui consumator sănătos mesajele care au stat prea mult în așteptare.

Pas cu pas

Ce se întâmplă, comandă cu comandă

  1. 01

    Publicați un eveniment

    Serviciul de comenzi adaugă un eveniment și primește înapoi id-ul lui.

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

    Două grupuri, un singur stream

    Facturarea și expedierea au fiecare propriul grup și fiecare primește evenimentul.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Consumați

    O instanță de facturare citește mesajele noi pentru grupul ei, blocând până sosește ceva.

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

    Confirmați

    Odată ce factura este creată, facturarea confirmă, iar mesajul iese din lista ei de așteptare.

    XACK orders billing 1790985600123-0
  5. 05

    Recuperați după o oprire bruscă

    O instanță de expediere s-a oprit având mesaje în mână. După 60 de secunde de inactivitate, ele sunt preluate de una sănătoasă.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Unde se potrivește

Scenarii din lumea reală

Pipeline-uri de comenzi

Comenzile curg spre facturare, expediere și analitică, fiecare citind același stream în ritmul propriu.

Fluxuri de audit și de activitate

Acțiunile utilizatorilor sunt adăugate într-un stream și reluate de orice serviciu care are nevoie de istoric.

Ingestie IoT

Mesajele dispozitivelor sunt memorate în streamuri și procesate de un grup de workeri care se scalează odată cu încărcarea.

Integrat

Ce primiți

Jurnal append-only

Intrările primesc id-uri ordonate în timp și pot fi tăiate după lungime sau vechime.

XADDXTRIM

Grupuri de consumatori

Fiecare grup primește fiecare mesaj și împarte munca între membrii lui.

XGROUPXREADGROUP

Confirmări

Mesajele rămân în așteptare până sunt confirmate.

XACKXPENDING

Recuperare automată

Mesajele inactive prea mult timp sunt preluate de alt consumator.

XAUTOCLAIMXCLAIM

Întrebări frecvente

Pot relua evenimente vechi?

Da. XRANGE citește orice parte a streamului după id, iar un grup de consumatori nou poate începe de la început.

Cum opresc un stream să crească la nesfârșit?

Tăiați-l cu XTRIM sau cu opțiunea MAXLEN sau MINID a lui XADD.

Poate XADD evita evenimentele duplicate?

XADD acceptă id-uri idempotente de producător (IDMP), deci o publicare reîncercată nu creează o a doua intrare. Vedeți referința XADD.

Cazuri de utilizare înrudite

Încercați pe propria sarcină de lucru

HotKV vorbește protocolul Redis, așa că puteți îndrepta spre el un client existent și rula aceleași comenzi.