Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wspólne subskrypcje w brokerze MQTT Azure Event Grid są wzorcem komunikacyjnym, który umożliwia wielu klientom korzystanie z komunikatów z jednej subskrypcji tematu jako grupa, co umożliwia brokerowi dystrybucję komunikatów między klientami w zrównoważony sposób. Zamiast każdego subskrybenta odbierającego każdy komunikat, tylko jeden klient w grupie udostępnionej odbiera każdy komunikat, zwiększając skalowalność i przepływność systemów przetwarzania zaplecza.
Jak działają subskrypcje udostępnione
W standardowej subskrypcji MQTT każdy subskrybowany klient otrzymuje kopię każdego komunikatu. W przypadku subskrypcji udostępnionych broker traktuje grupę klientów jako pojedynczego subskrybenta logicznego i dystrybuuje między nimi komunikaty.
- Każdy komunikat aplikacji pasujący do filtru udostępnionego jest dostarczany tylko do jednej aktywnej sesji w grupie
- Dystrybucja jest zazwyczaj zrównoważona za pomocą losowego rozdzielenia w grupie.
- Sesja klienta może zawierać jednocześnie zarówno subskrypcje udostępnione, jak i nieudostępne
- Wiele grup może subskrybować ten sam temat niezależnie
Format udostępnionego tematu subskrypcji
Subskrypcje udostępnione używają następującego formatu:
$share/{group-name}/{topic-filter}
Składniki:
-
$share→ Identyfikuje udostępnioną subskrypcję -
{group-name}grupa logicznych konsumentów -
{topic-filter}→ subskrypcja tematyczna lub subskrypcja wieloznaczna
Example:
$share/order-processors/retail/orders/#
Kluczowe cechy
- Zużycie ze zrównoważonym obciążeniem: wiadomości są równomiernie rozdzielane pomiędzy klientów w tej samej grupie, aby zapewnić wydajne przetwarzanie.
- Skalowalność w poziomie: Konsumenci mogą skalować się poziomo niezależnie, bez wpływu na wydawców.
- Niezależne grupy konsumentów: wiele wspólnych grup otrzymuje te same wiadomości niezależnie, zachowując wewnętrzną równowagę.
- Obsługa subskrypcji mieszanej: klient może obsługiwać zarówno współużytkowane, jak i nieudostępne subskrypcje w tej samej sesji.
Przykładowy scenariusz: Przetwarzanie zamówień detalicznych
Rozważmy scenariusz przetwarzania zamówień detalicznych przy użyciu brokera MQTT usługi Event Grid:
- Temat:
retail/orders - Grupa udostępniona:
order-workers - Klienci: Worker1, Worker2, Worker3
Przepływ:
- Zamówienia są publikowane w
retail/orders - Wszyscy pracownicy subskrybują:
$share/order-workers/retail/orders - Broker usługi MQTT w Event Grid dystrybuuje:
- Zlecenie 1 → Pracownik1
- Zamówienie 2 → Worker2
- Zlecenie 3 → Pracownik3
Każde zamówienie jest przetwarzane raz, podczas gdy system skaluje się horyzontalnie.
Zachowanie i ograniczenia protokołu
Obsługa wersji MQTT
- Funkcja tylko MQTT 5
- Klienci MQTT 3.1.1 podejmujący próby
$share/...zostaną rozłączeni
Semantyka dostarczania komunikatów
- Każdy komunikat jest dostarczany do jednego klienta na grupę
- Dostarczanie odbywa się zgodnie z semantyką dostarczenia przynajmniej raz (QoS 1)
Kolejność komunikatów
- Brak zapewnienia ścisłego porządku pomiędzy członkami grupy
Zachowanie sesji
- Wygaśnięcie sesji ma wpływ na dostarczanie komunikatów:
- Jeśli klient rozłącza się i wygasa sesja, komunikaty mogą zostać ponownie przydzielone
- Trwałe sesje zwiększają niezawodność
Przypadki użycia w brokerze MQTT usługi Event Grid
Subskrypcje udostępnione są idealne dla:
- Przetwarzanie danych telemetrycznych IoT o wysokiej przepływności: dystrybuuj dane telemetryczne lub zdarzenia w wielu usługach przetwarzania.
- Pule pracowników zaplecza/mikrousługi: umożliwiają usługi bezstanowe do przetwarzania zdarzeń bez powielania.
- Użytkownicy ujednoliconej przestrzeni nazw (UNS): efektywnie zużywają strumienie danych przemysłowych o wysokiej przepływności.
Kiedy używać subskrypcji udostępnionych
Użyj subskrypcji udostępnionych, gdy:
- Potrzebujesz równoległego przetwarzania komunikatów.
- Pojedynczy użytkownik nie może obsłużyć obciążenia.
- Potrzebujesz skalowalnych i odpornych architektur.
- Chcesz unikać tworzenia własnego rozwiązania do równoważenia obciążenia.