Dane podstawoweCzas rzeczywisty

Czat i powiadomienia w czasie rzeczywistym

Rozsyłaj wiadomości do każdego połączonego klienta w czasie rzeczywistym, z shardowanymi kanałami dla klastrów i strumieniami dla historii.

publikacja, każdy subskrybent
1
kanały dla klastrów
Sharded
ze strumieniami
+historia
Krok 1 z 5
Serwery subskrybują

Każdy serwer WebSocket subskrybuje pokoje, w których są jego połączeni użytkownicy.

Przykładowa sesjaplaying
# Serwery subskrybują
hotkv> SUBSCRIBE room:42
1) "subscribe"
2) "room:42"
3) (integer) 1

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

Pokój czatu lub strumień powiadomień na żywo musi dotrzeć do każdego połączonego użytkownika naraz, przez wiele serwerów WebSocket. Odpytywanie bazy danych jest zbyt wolne i drogie, a serwery potrzebują wspólnego sposobu informowania się nawzajem, że coś się stało.

Jak radzi sobie z tym HotKV

Każdy serwer WebSocket subskrybuje kanały, na których zależy jego użytkownikom. Gdy cokolwiek się dzieje, jedno PUBLISH dociera do każdego subskrybującego serwera, który przekazuje to swoim użytkownikom. Shardowane kanały utrzymują ruch na węźle będącym właścicielem kanału w klastrze, a strumień obok każdego pokoju przechowuje historię dla użytkowników, którzy dołączą później.

Krok po kroku

Co się dzieje, polecenie po poleceniu

  1. 01

    Serwery subskrybują

    Każdy serwer WebSocket subskrybuje pokoje, w których są jego połączeni użytkownicy.

    SUBSCRIBE room:42
  2. 02

    Alice wysyła wiadomość

    Jej serwer publikuje raz. Odpowiedź to liczba subskrybentów, którzy ją otrzymali.

    PUBLISH room:42 "{\"from\":\"alice\",\"text\":\"Deploy is green\"}"
  3. 03

    Zachowaj historię

    Wiadomość jest też dopisywana do strumienia pokoju, ograniczonego do ostatnich 1000 wiadomości.

    XADD room:42:history MAXLEN ~ 1000 * from alice text "Deploy is green"
  4. 04

    Bob łączy się później

    Czyta ostatnie 50 wiadomości ze strumienia, a potem przechodzi na żywo na kanał.

    XREVRANGE room:42:history + - COUNT 50
  5. 05

    Shardowane kanały w klastrze

    W trybie klastra SPUBLISH utrzymuje wiadomość na węźle będącym właścicielem kanału.

    SPUBLISH room:{42}:typing "alice"
Gdzie się sprawdza

Scenariusze z życia

Czat zespołowy i czat wsparcia

Wiadomości rozchodzą się do każdego serwera trzymającego połączenie członka, a strumień daje nowym zaległości.

Powiadomienia na żywo

Aktualizacje zamówień, wzmianki i alerty są wysyłane do przeglądarki w chwili, gdy się wydarzą.

Aplikacje współdzielone

Pozycje kursorów i wskaźniki pisania są rozsyłane na krótkotrwałych kanałach.

Wbudowane

Co dostajesz

Rozsyłanie

Jedna publikacja dociera do każdego subskrybenta.

PUBLISHSUBSCRIBE

Subskrypcje wzorców

Subskrybuj room:*, aby otrzymywać każdy pokój.

PSUBSCRIBE

Shardowany pub/sub

Kanały pozostają na węźle, który jest ich właścicielem w klastrze.

SPUBLISHSSUBSCRIBE

Historia

Połącz kanał z ograniczonym strumieniem dla wiadomości, które użytkownicy ominęli.

XADDXREVRANGE

Częste pytania

Czy wiadomości pub/sub są przechowywane?

Nie. Pub/sub dostarcza do tych, którzy są w danej chwili zasubskrybowani. Użyj strumienia obok kanału, jeśli użytkownicy potrzebują historii.

Czy działa w klastrze?

Tak. Użyj shardowanego pub/sub (SPUBLISH, SSUBSCRIBE), aby ruch każdego kanału pozostawał na węźle, który jest jego właścicielem.

Czy mogę dostawać powiadomienia o zmianach kluczy?

Tak. Powiadomienia przestrzeni kluczy publikują zdarzenia o zmianach kluczy. Zobacz dokumentację powiadomień przestrzeni kluczy.

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.