Základní dataPráce na pozadí

Streamování událostí se skupinami konzumentů

Append-only proudy událostí se skupinami konzumentů, potvrzeními a automatickou obnovou zpráv, které spadlý konzument zanechal.

append-only log
Odolný
skupin konzumentů na stream
N
ztracených zpráv při pádu
0
Krok 1 z 5
Publikování události

Služba objednávek připojí událost a dostane zpět její id.

Ukázková relaceplaying
# Publikování události
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

Animovaný průvodce se skutečnými příkazy HotKV a ukázkovými odpověďmi. Kliknutím na kterýkoli krok na něj přeskočíte. Příkazy a odpovědi zůstávají anglicky, přesně tak, jak je v HotKV zadáváte a vidíte.

Problém

Služby, které reagují na události, potřebují víc než frontu. Několik nezávislých konzumentů chce stejné události, každá skupina konzumentů si musí rozdělit práci mezi instance a když instance zemře se zprávami v ruce, někdo si toho musí všimnout a převzít je.

Jak to řeší HotKV

Stream je append-only log. Každá skupina konzumentů ho čte nezávisle, doručuje každou zprávu jednomu členu skupiny a drží ji nevyřízenou, dokud ji člen nepotvrdí. XAUTOCLAIM předá zprávy, které jsou nevyřízené příliš dlouho, zdravému konzumentovi.

Krok za krokem

Co se děje, příkaz po příkazu

  1. 01

    Publikování události

    Služba objednávek připojí událost a dostane zpět její id.

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

    Dvě skupiny, jeden stream

    Fakturace a doprava mají každá svou skupinu a každá událost dostane.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Konzumace

    Instance fakturace čte nové zprávy pro svou skupinu a blokuje, dokud něco nepřijde.

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

    Potvrzení

    Jakmile je faktura vytvořena, fakturace potvrdí a zpráva opustí její seznam nevyřízených.

    XACK orders billing 1790985600123-0
  5. 05

    Obnova po pádu

    Instance dopravy zemřela se zprávami v ruce. Po 60 sekundách nečinnosti je převezme zdravá.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Kam to zapadá

Scénáře z praxe

Pipeline objednávek

Objednávky proudí do fakturace, dopravy a analytiky, každá čte stejný stream vlastním tempem.

Audit a feedy aktivity

Akce uživatelů se připojují do streamu a přehrává je každá služba, která potřebuje historii.

Příjem dat z IoT

Zprávy ze zařízení se ukládají do bufferu ve streamech a zpracovává je skupina workerů, která se škáluje se zátěží.

Zabudováno

Co dostanete

Append-only log

Položky dostávají id seřazená podle času a lze je ořezávat podle délky nebo stáří.

XADDXTRIM

Skupiny konzumentů

Každá skupina dostane každou zprávu a práci sdílí mezi svými členy.

XGROUPXREADGROUP

Potvrzení

Zprávy zůstávají nevyřízené, dokud nejsou potvrzeny.

XACKXPENDING

Automatická obnova

Zprávy nečinné příliš dlouho převezme jiný konzument.

XAUTOCLAIMXCLAIM

Časté otázky

Mohu přehrát staré události?

Ano. XRANGE čte libovolnou část streamu podle id a nová skupina konzumentů může začít od začátku.

Jak zabráním tomu, aby stream rostl donekonečna?

Ořezávejte ho pomocí XTRIM nebo pomocí volby MAXLEN či MINID příkazu XADD.

Může XADD zabránit duplicitním událostem?

XADD podporuje idempotentní id producentů (IDMP), takže opakované publikování nevytvoří druhou položku. Viz reference XADD.

Související případy použití

Vyzkoušejte to na své zátěži

HotKV mluví protokolem Redisu, takže na něj můžete nasměrovat stávajícího klienta a spustit tytéž příkazy.