Základní dataPráce na pozadí

Fronty úloh

Fronty FIFO, které neztratí úlohy, když worker zemře, s producenty a konzumenty běžícími paralelně.

LPUSH/s v pipeline, změřeno
31.6M
ztracených úloh při pádu
0
pollingu
0
Krok 1 z 5
Producenti vkládají úlohy

Kterákoli služba přidá práci, aniž by čekala na konzumenty.

Ukázková relaceplaying
# Producenti vkládají úlohy
hotkv> LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
(integer) 18

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

Práce na pozadí, například e-maily, změna velikosti obrázků a webhooky, potřebuje frontu mezi kódem, který ji vytváří, a kódem, který ji provádí. Fronta, která ztratí úlohu, když worker uprostřed úkolu spadne, je horší než žádná fronta, protože si nikdo nevšimne, že úloha zmizela.

Jak to řeší HotKV

Seznamy dávají jednoduchou frontu FIFO. BLMOVE přesune každou úlohu do seznamu zpracování ve chvíli, kdy je předána workeru, takže rozpracovaná úloha je vždy někde uložena, i když ten worker zmizí. Producenty a konzumenty obsluhují paralelní pracovní vlákna.

Krok za krokem

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

  1. 01

    Producenti vkládají úlohy

    Kterákoli služba přidá práci, aniž by čekala na konzumenty.

    LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  2. 02

    Worker bezpečně převezme úlohu

    BLMOVE blokuje, dokud není úloha k dispozici, a pak ji jedním krokem přesune do seznamu zpracování.

    BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0
  3. 03

    Potvrzení po dokončení

    E-mail odešel. Úloha se odstraní ze seznamu zpracování.

    LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  4. 04

    Worker spadne

    Worker 2 zemře uprostřed úlohy. Jeho úloha je stále v seznamu zpracování, neztratila se.

    LRANGE queue:emails:processing 0 -1
  5. 05

    Znovu zařadit a pokračovat

    Monitor přesune opuštěnou úlohu zpět do fronty a převezme ji jiný worker.

    LMOVE queue:emails:processing queue:emails LEFT RIGHT
Kam to zapadá

Scénáře z praxe

Transakční e-maily a SMS

Zprávy o registraci, potvrzení a obnově hesla zařazuje do fronty webová aplikace a odesílá je skupina workerů.

Zpracování médií

Nahrané soubory se řadí do fronty pro náhledy a překódování a spadlý transkodér nikdy neztratí soubor.

Doručování webhooků

Odchozí webhooky se řadí do fronty a opakují bez blokování požadavku, který je spustil.

Zabudováno

Co dostanete

FIFO s blokujícím čtením

LPUSH s BRPOP, přičemž workeři spí, dokud nepřijde práce.

LPUSHBRPOP

Žádné ztracené úlohy

BLMOVE předá každou úlohu atomicky do seznamu zpracování.

BLMOVELREM

Paralelní producenti a konzumenti

Producenty a konzumenty obsluhují paralelní pracovní vlákna.

Potřebujete víc?

Pro potvrzení, skupiny konzumentů a přehrávání použijte streamy.

XADDXREADGROUP

Časté otázky

Co se stane s úlohou, když worker spadne?

Pokud úlohy přebíráte pomocí BLMOVE, úloha zůstane v seznamu zpracování. Monitor může cokoli, co tam leží příliš dlouho, přesunout zpět do fronty.

Musí workeři provádět polling?

Ne. BRPOP a BLMOVE blokují, dokud úloha nepřijde, s volitelným timeoutem.

Seznamy, nebo streamy?

Seznamy jsou nejjednodušší fronta. Streamy přidávají skupiny konzumentů, potvrzení každé zprávy a historii. Viz případ použití streamování událostí.

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.