Co to jest usługa Azure Service Bus?

Usługa Azure Service Bus to w pełni zarządzany broker komunikatów przedsiębiorstwa z kolejkami komunikatów i tematami publikowania i subskrybowania. Usługa Service Bus służy do oddzielenia aplikacji i usług od siebie, zapewniając następujące korzyści:

  • Równoważenie obciążenia działa między konkurencyjnymi procesami roboczymi
  • Sejf routingu i przesyłania danych oraz kontroli między granicami usług i aplikacji
  • Koordynowanie prac transakcyjnych wymagających wysokiego stopnia niezawodności

Omówienie

Dane są przesyłane między różnymi aplikacjami i usługami przy użyciu komunikatów. Komunikat jest kontenerem ozdobionym metadanymi i zawiera dane. Dane mogą być dowolnym rodzajem informacji, w tym dane ustrukturyzowane zakodowane przy użyciu typowych formatów, takich jak następujące: JSON, XML, Apache Avro, Zwykły tekst.

Niektóre typowe scenariusze obsługi komunikatów:

  • Obsługa komunikatów. Transfer danych biznesowych, takich jak sprzedaż lub zamówienia zakupu, dzienniki lub ruchy zapasów.

  • Rozdziel aplikacje. Zwiększanie niezawodności i skalowalności aplikacji i usług. Producent i konsument nie muszą być w trybie online ani łatwo dostępne w tym samym czasie. Obciążenie jest wyrównane, tak aby skoki ruchu nie przewyższyły usługi.

  • Równoważenie obciążenia. Zezwalaj wielu konkurencyjnym konsumentom na odczytywanie z kolejki w tym samym czasie, z których każdy bezpiecznie uzyskuje wyłączność własności do określonych komunikatów.

  • Tematy i subskrypcje. Włącz relacje 1:n między wydawcami i subskrybentami, umożliwiając subskrybentom wybieranie określonych wiadomości z opublikowanego strumienia wiadomości.

  • Transakcje. Umożliwia wykonywanie kilku operacji— wszystkie w zakresie transakcji niepodzielnej. Na przykład następujące operacje można wykonać w zakresie transakcji.

    1. Uzyskiwanie komunikatu z jednej kolejki.
    2. Opublikuj wyniki przetwarzania do co najmniej jednej innej kolejki.
    3. Przenieś komunikat wejściowy z oryginalnej kolejki.

    Wyniki stają się widoczne dla odbiorców podrzędnych tylko w przypadku powodzenia, w tym pomyślnego rozliczenia komunikatu wejściowego, co pozwala na przetwarzanie semantyki tylko raz. Ten model transakcji jest solidną podstawą wzorca transakcji wyrównywujących w większym kontekście rozwiązania.

  • Sesje komunikatów. Zaimplementuj wysoką koordynację przepływów pracy i multipleksowanych transferów, które wymagają ścisłego porządkowania komunikatów lub odroczenia komunikatów.

Jeśli znasz innych brokerów komunikatów, takich jak Apache ActiveMQ, pojęcia usługi Service Bus są podobne do tego, co wiesz. Ponieważ usługa Service Bus jest ofertą typu "platforma jako usługa" (PaaS), kluczową różnicą jest to, że nie musisz martwić się o następujące akcje. Platforma Azure zajmuje się tymi zadaniami.

  • Martwienie się o awarie sprzętu
  • Utrzymywanie poprawek systemów operacyjnych lub produktów
  • Umieszczanie dzienników i zarządzanie miejscem na dysku
  • Obsługa kopii zapasowych
  • Przechodzenie w tryb failover do maszyny rezerwowej

Pojęcia

W tej sekcji omówiono podstawowe pojęcia dotyczące usługi Service Bus.

Kolejki

Komunikaty są wysyłane do kolejek i odbierane z nich. Kolejki przechowują komunikaty, dopóki aplikacja odbierający nie będzie dostępna do ich odbierania i przetwarzania.

Diagram przedstawiający kolejkę usługi Service Bus z nadawcą i odbiorcą wysyłającym i odbierającego komunikaty.

Komunikaty w kolejkach są uporządkowane i znaczniki czasu po przybyciu. Gdy broker zaakceptuje komunikat, komunikat jest zawsze przechowywany w magazynie potrójnie nadmiarowym, rozłożony na strefy dostępności, jeśli przestrzeń nazw jest włączona w strefie. Usługa Service Bus przechowuje komunikaty w pamięci lub nietrwałym magazynie, dopóki klient nie zgłosi ich jako zaakceptowane.

Komunikaty są dostarczane w trybie ściągania , dostarczając komunikaty tylko po żądaniu. W przeciwieństwie do modelu zajętego sondowania niektórych innych kolejek w chmurze, operacja ściągania może być długotrwała i wykonywana tylko po udostępnieniu komunikatu.

Uwaga

Aby zapoznać się z porównaniem kolejek usługi Service Bus z kolejkami usługi Storage, zobacz Kolejki magazynu i kolejki usługi Service Bus — porównywane i kontrastowane.

Tematy

Do wysyłania i odbierania komunikatów można również używać tematów. Podczas gdy kolejka jest często używana do komunikacji punkt-punkt, tematy są przydatne w scenariuszach publikowania-subskrybowania.

Diagram przedstawiający temat usługi Service Bus z jednym nadawcą i wieloma odbiornikami.

Tematy mogą mieć wiele, niezależnych subskrypcji, które dołączają do tematu i działają dokładnie tak jak kolejki po stronie odbiorcy. Subskrybent tematu może otrzymywać kopie wszystkich komunikatów wysłanych do tego tematu. Subskrypcje są nazwane jednostki. Subskrypcje są domyślnie trwałe, ale można je skonfigurować do wygaśnięcia, a następnie automatycznie usuwać. Za pośrednictwem interfejsu API usługi Java Message Service (JMS) usługa Service Bus Premium umożliwia również tworzenie nietrwałych subskrypcji, które istnieją przez czas trwania połączenia.

Możesz zdefiniować reguły dla subskrypcji. Reguła subskrypcji zawiera filtr definiujące warunek skopiowania komunikatu do subskrypcji oraz opcjonalną akcję , która może modyfikować metadane komunikatu. Aby uzyskać więcej informacji, zobacz Temat filtry i akcje. Ta funkcja jest przydatna w następujących scenariuszach:

  • Nie chcesz, aby subskrypcja odbierała wszystkie komunikaty wysyłane do tematu.
  • Chcesz oznaczyć komunikaty dodatkowymi metadanymi podczas przekazywania subskrypcji.

Uwaga

Aby uzyskać więcej informacji na temat kolejek i tematów, zobacz Kolejki, tematy i subskrypcje usługi Service Bus.

Przestrzenie nazw

Przestrzeń nazw to kontener dla wszystkich składników obsługi komunikatów (kolejek i tematów). Przestrzeń nazw może zawierać co najmniej jedną kolejkę i tematy, a często służy jako kontener aplikacji.

Przestrzeń nazw można porównać z serwerem w terminologii innych brokerów, ale pojęcia nie są bezpośrednio równoważne. Przestrzeń nazw usługi Service Bus to fragment pojemności dużego klastra składający się z kilkudziesięciu aktywnych maszyn wirtualnych. Opcjonalnie obejmuje trzy strefy dostępności platformy Azure. Dzięki temu uzyskasz wszystkie korzyści z dostępności i niezawodności uruchamiania brokera komunikatów na ogromną skalę. I nie musisz martwić się o podstawowe złożoność. Usługa Service Bus to bezserwerowa obsługa komunikatów.

Funkcje zaawansowane

Usługa Service Bus ma również zaawansowane funkcje, które umożliwiają rozwiązywanie bardziej złożonych problemów z obsługą komunikatów. Te kluczowe funkcje zostały opisane w sekcjach poniżej:

Sesje komunikatów

Aby zrealizować gwarancję fiFO (first-in, first-out) w przetwarzaniu komunikatów w kolejkach lub subskrypcjach usługi Service Bus, użyj sesji. Sesje mogą być również używane w implementowaniu wzorców żądań-odpowiedzi. Wzorzec odpowiedzi na żądanie umożliwia aplikacji nadawcy wysyłanie żądania i umożliwia odbiorcy poprawne wysłanie odpowiedzi z powrotem do aplikacji nadawcy. Aby uzyskać więcej informacji, zobacz Sesje komunikatów.

Automatyczne przekazywanie

Funkcja automatycznego przesyłania dalej umożliwia łączenie kolejki lub subskrypcji z inną kolejką lub tematem, który jest częścią tej samej przestrzeni nazw. Gdy funkcja automatycznego przekazywania jest włączona, usługa Service Bus automatycznie usuwa komunikaty znajdujące się w pierwszej kolejce lub subskrypcji (źródle) i umieszcza je w drugiej kolejce lub drugim temacie (celu). Aby uzyskać więcej informacji, zobacz Łączenie jednostek usługi Service Bus z automatycznym przekazywaniem

Obsługa utraconych komunikatów

Kolejki i subskrypcje tematów usługi Service Bus udostępniają dodatkową kolejkę nazywaną kolejką utraconych komunikatów (DLQ). Kolejka utraconych komunikatów zawiera komunikaty, których nie można dostarczyć do żadnego odbiorcy ani komunikatów, których nie można przetworzyć. Te komunikaty można usunąć z kolejki DLQ lub zbadać. Aplikacja może, z pomocą operatora, rozwiązać problemy i ponownie przesłać komunikat, zarejestrować fakt, że wystąpił błąd, i podjąć akcję naprawczą. Aby uzyskać więcej informacji, zobacz Omówienie kolejek utraconych komunikatów usługi Service Bus.

Zaplanowane dostarczanie

Komunikaty można przesyłać do kolejki lub tematu w celu opóźnionego przetwarzania. Aby na przykład zaplanować udostępnienie zadania do przetwarzania przez system w określonym czasie. Aby uzyskać więcej informacji, zobacz Zaplanowane komunikaty.

Odraczanie komunikatów

Gdy klient kolejki lub subskrypcji otrzymuje komunikat, że jest gotów przetworzyć, ale dla którego przetwarzanie nie jest obecnie możliwe z powodu szczególnych okoliczności w aplikacji, jednostka może odroczyć pobieranie komunikatu do późniejszego punktu. Komunikat pozostaje w kolejce lub subskrypcji, ale jest odkładany. Aby uzyskać więcej informacji, zobacz Odroczenie komunikatów.

Transakcje

Transakcja grupuje razem co najmniej dwie operacje w zakresie wykonania. Usługa Service Bus obsługuje grupowanie operacji względem jednej jednostki obsługi komunikatów (kolejki, tematu, subskrypcji) w zakresie transakcji. Aby uzyskać więcej informacji, zobacz Omówienie przetwarzania transakcji usługi Service Bus.

Filtry i akcje

Subskrybenci mogą zdefiniować, które komunikaty chcą odbierać z tematu. Komunikaty te są określone w formie co najmniej jednej nazwanej reguły subskrypcji. Każda reguła składa się z warunku filtru, który wybiera określone komunikaty i opcjonalnie zawiera akcję , która donotuje wybrany komunikat. Dla każdego zgodnego warunku reguły subskrypcja tworzy kopię komunikatu, która może być inaczej oznaczona jako adnotacja dla każdej zgodnej reguły. Aby uzyskać więcej informacji, zobacz Temat filtry i akcje.

Automatyczne usuwanie w stanie bezczynności

Automatyczne usuwanie w stanie bezczynności służy do określania interwału bezczynności, po którym kolejka zostanie automatycznie usunięta. Interwał jest resetowany w przypadku ruchu w kolejce. Minimalny czas trwania wynosi 5 minut.

Wykrywanie duplikatów

Jeśli wystąpi błąd, który powoduje, że klient ma wątpliwości co do wyniku operacji wysyłania, wykrywanie duplikatów powoduje wątpliwości co do tych sytuacji, umożliwiając nadawcy ponowne wysłanie tego samego komunikatu, a kolejka lub temat odrzuca wszelkie duplikaty kopii. Aby uzyskać więcej informacji, zobacz Wykrywanie duplikatów.

Zabezpieczenia

Usługa Service Bus obsługuje protokoły zabezpieczeń, takie jak sygnatury dostępu współdzielonego (SAS), kontrola dostępu oparta na rolach (RBAC) i tożsamości zarządzane dla zasobów platformy Azure.

Usługa Service Bus obsługuje standardowe protokoły Advanced Message Queuing Protocol (AMQP) 1.0 i HTTP/REST .

Geograficzne odzyskiwanie po awarii

Jeśli w regionach lub centrach danych Azure dojdzie do przestoju, geograficzne odzyskiwanie po awarii umożliwia kontynuowanie przetwarzania danych w innym regionie lub centrum danych.

Uwaga

Aby uzyskać więcej informacji na temat tych funkcji, zobacz Zaawansowane funkcje usługi Azure Service Bus.

Zgodność ze standardami i protokołami

Podstawowym protokołem przewodowym dla usługi Service Bus jest protokół Advanced Messaging Queueing Protocol (AMQP) 1.0, otwarty standard ISO/IEC. Umożliwia ona klientom pisanie aplikacji, które działają względem usługi Service Bus i lokalnych brokerów, takich jak ActiveMQ lub RabbitMQ. Przewodnik po protokole AMQP zawiera szczegółowe informacje na wypadek, gdy chcesz utworzyć taką abstrakcję.

Usługa Service Bus Premium jest w pełni zgodna z interfejsem API Java/Jakarta EE Java Message Service (JMS) 2.0 . Usługa Service Bus Standard obsługuje podzestaw JMS 1.1 skoncentrowany na kolejkach. Usługa JMS jest powszechną abstrakcją dla brokerów komunikatów i integruje się z wieloma aplikacjami i strukturami, w tym popularną platformą Spring. Aby przełączyć się z innych brokerów do usługi Azure Service Bus, wystarczy ponownie utworzyć topologię kolejek i tematów oraz zmienić zależności i konfigurację dostawcy klienta. Aby zapoznać się z przykładem, zobacz przewodnik migracji activemq.

Biblioteki klienta

W pełni obsługiwane biblioteki klienta usługi Service Bus są dostępne za pośrednictwem zestawu Azure SDK.

Podstawowy protokół usługi Azure Service Bus to AMQP 1.0 i może być używany z dowolnego zgodnego klienta protokołu AMQP 1.0. Kilku klientów amQP typu open source ma przykłady, które jawnie pokazują współdziałanie usługi Service Bus. Zapoznaj się z przewodnikiem po protokole AMQP 1.0, aby dowiedzieć się, jak używać funkcji usługi Service Bus bezpośrednio z klientami amQP 1.0.

Język Biblioteka
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP for Python, Apache Qpid Proton Python
PHP Azure uAMQP dla języka PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Rhea

Integracja

Usługa Service Bus w pełni integruje się z wieloma usługami firmy Microsoft i platformy Azure, na przykład:

Następne kroki

Aby rozpocząć korzystanie z obsługi komunikatów usługi Service Bus, zobacz następujące artykuły: