Dane podstawowePraca w tle

Kolejki zadań

Kolejki FIFO, które nie gubią zadań, gdy worker padnie, z producentami i konsumentami działającymi równolegle.

LPUSH/s w potoku, zmierzone
31.6M
zadań utraconych po awarii
0
odpytywania
0
Krok 1 z 5
Producenci wstawiają zadania

Każda usługa dodaje pracę, nie czekając na konsumentów.

Przykładowa sesjaplaying
# Producenci wstawiają zadania
hotkv> LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
(integer) 18

Animowany przegląd z prawdziwymi poleceniami HotKV i przykładowymi odpowiedziami. Kliknij dowolny krok, aby do niego przejść. Polecenia i odpowiedzi pozostają po angielsku, dokładnie tak, jak je wpisujesz i widzisz w HotKV.

Problem

Praca w tle, jak e-maile, zmiana rozmiaru obrazów i webhooki, potrzebuje kolejki między kodem, który ją tworzy, a kodem, który ją wykonuje. Kolejka, która gubi zadanie, gdy worker ulegnie awarii w trakcie, jest gorsza niż brak kolejki, bo nikt nie zauważa, że zadania nie ma.

Jak radzi sobie z tym HotKV

Listy dają prostą kolejkę FIFO. BLMOVE przenosi każde zadanie na listę przetwarzania w chwili przekazania workerowi, więc zadanie w toku jest zawsze gdzieś zapisane, jeśli worker zniknie. Producentów i konsumentów obsługują równoległe wątki robocze.

Krok po kroku

Co się dzieje, polecenie po poleceniu

  1. 01

    Producenci wstawiają zadania

    Każda usługa dodaje pracę, nie czekając na konsumentów.

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

    Worker bezpiecznie przejmuje zadanie

    BLMOVE blokuje do pojawienia się zadania, a potem przenosi je na listę przetwarzania w jednym kroku.

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

    Potwierdź po zakończeniu

    E-mail wyszedł. Zadanie jest usuwane z listy przetwarzania.

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

    Worker ulega awarii

    Worker 2 pada w trakcie zadania. Jego zadanie nadal jest na liście przetwarzania, nie zginęło.

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

    Ponownie kolejkuj i jedź dalej

    Monitor przenosi porzucone zadanie z powrotem do kolejki, a inny worker je podejmuje.

    LMOVE queue:emails:processing queue:emails LEFT RIGHT
Gdzie się sprawdza

Scenariusze z życia

E-mail i SMS transakcyjne

Wiadomości rejestracyjne, potwierdzenia i resetów są kolejkowane przez aplikację webową i wysyłane przez pulę workerów.

Przetwarzanie mediów

Przesłane pliki są kolejkowane do generowania miniatur i transkodowania, a transkoder, który ulegnie awarii, nigdy nie gubi pliku.

Dostarczanie webhooków

Wychodzące webhooki są kolejkowane i ponawiane bez blokowania żądania, które je wywołało.

Wbudowane

Co dostajesz

FIFO z blokującymi odczytami

LPUSH z BRPOP, a workery śpią do nadejścia pracy.

LPUSHBRPOP

Brak utraconych zadań

BLMOVE atomowo przekazuje każde zadanie na listę przetwarzania.

BLMOVELREM

Równoległi producenci i konsumenci

Producentów i konsumentów obsługują równoległe wątki robocze.

Potrzebujesz więcej?

Dla potwierdzeń, grup konsumentów i odtwarzania użyj strumieni.

XADDXREADGROUP

Częste pytania

Co się dzieje z zadaniem, gdy worker ulegnie awarii?

Jeśli przejmujesz zadania przez BLMOVE, zadanie leży na liście przetwarzania. Monitor może przenieść wszystko, co leży tam za długo, z powrotem do kolejki.

Czy workery muszą odpytywać?

Nie. BRPOP i BLMOVE blokują do nadejścia zadania, z opcjonalnym limitem czasu.

Listy czy strumienie?

Listy to najprostsza kolejka. Strumienie dodają grupy konsumentów, potwierdzenia dla każdej wiadomości i historię. Zobacz przypadek użycia strumieniowania zdarzeń.

Powiązane przypadki użycia

Wypróbuj na własnym obciążeniu

HotKV mówi protokołem Redis, więc możesz skierować na niego istniejącego klienta i uruchomić te same polecenia.