Pojęcia dotyczące przestrzeni nazw usługi Azure Event Grid

W tym artykule opisano główne pojęcia i funkcje skojarzone z tematami przestrzeni nazw.

Zdarzenia

Zdarzenie to najmniejsza ilość informacji, które w pełni opisują coś, co wydarzyło się w systemie. Zdarzenie jest często nazywane odrębnym zdarzeniem, ponieważ reprezentuje odrębny, samodzielny fakt dotyczący systemu, który zapewnia szczegółowe informacje umożliwiające podejmowanie działań. Każde zdarzenie ma wspólne informacje, takie jak source zdarzenia, time miało ono miejsce, oraz unikalny identyfikator. Każde zdarzenie ma również type, który zazwyczaj jest unikatowym identyfikatorem opisującym rodzaj komunikatu, do którego dane zdarzenie jest używane.

Na przykład zdarzenie dotyczące tworzenia nowego pliku w usłudze Azure Storage zawiera szczegóły pliku, takie jak wartość lastTimeModified. Zdarzenie usługi Event Hubs ma adres URL przechwyconego pliku. Zdarzenie dotyczące nowego zamówienia w mikrousłudze Orders może zawierać atrybut orderId oraz atrybut adresu URL wskazujący na reprezentację stanu zamówienia. Oto kilka innych przykładów typów zdarzeń: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Oto przykładowe zdarzenie:

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Inny rodzaj zdarzenia

Społeczność użytkowników odnosi się również do komunikatów zawierających punkt danych, takich jak odczyt pojedynczego urządzenia lub kliknięcie strony aplikacji internetowej jako "zdarzenia". Zazwyczaj analizujesz tego rodzaju zdarzenie w przedziale czasu, aby uzyskać szczegółowe informacje i podjąć akcję. W dokumentacji usługi Event Grid tego rodzaju zdarzenie jest nazywane punktem danych, danymi przesyłanymi strumieniowo lub po prostu telemetrią. Funkcja brokera protokołu MQTT (Message Queuing Telemetry Transport) usługi Event Grid korzysta z tego typu zdarzeń obok innych typów komunikatów.

Obsługa rozwiązań CloudEvents

Tematy przestrzeni nazw usługi Event Grid akceptują zdarzenia zgodne ze specyfikacją otwartego standardu organizacji Cloud Native Computing Foundation (CNCF) CloudEvents 1.0, przy użyciu powiązania protokołu HTTP w formacie JSON. CloudEvent to rodzaj komunikatu, który zawiera informacje, które są przekazywane, nazywane danymi zdarzenia i metadanymi. Dane zdarzenia w architekturach opartych na zdarzeniach zwykle zawierają informacje ogłaszające zmianę stanu systemu. Metadane CloudEvents składają się z zestawu atrybutów, które zapewniają kontekstowe informacje o komunikacie, takie jak miejsce jego pochodzenia (system źródłowy) i jego typ.

Aby uzyskać więcej informacji, zobacz Obsługa schematu CloudEvents.

Wydawcy

Wydawca to aplikacja, która wysyła zdarzenia do usługi Event Grid. Może to być ta sama aplikacja, z której pochodzą zdarzenia, źródło zdarzeń. Możesz publikować zdarzenia z własnej aplikacji podczas korzystania z tematów przestrzeni nazw.

Źródła zdarzeń

Źródłem zdarzeń jest miejsce, w którym odbywa się zdarzenie. Każde źródło zdarzeń obsługuje co najmniej jeden typ zdarzenia. Na przykład aplikacja jest źródłem zdarzeń niestandardowych, które definiuje system. W przypadku korzystania z tematów w przestrzeni nazw obsługiwanymi źródłami zdarzeń są własne aplikacje.

Przestrzenie nazw

Przestrzeń nazw usługi Event Grid jest kontenerem zarządzania dla następujących zasobów:

Zasób Obsługiwany protokół
Tematy dotyczące przestrzeni nazw HTTP
Miejsca do tematów MQTT
Klienci MQTT
Grupy klientów MQTT
Certyfikaty urzędu certyfikacji MQTT
Powiązania uprawnień MQTT

Korzystając z przestrzeni nazw Azure Event Grid, możesz grupować powiązane zasoby i zarządzać nimi jako jedną jednostką w swojej subskrypcji Azure. Zapewnia unikatową w pełni kwalifikowaną nazwę domeny (FQDN).

Przestrzeń nazw uwidacznia dwa punkty końcowe:

  • Punkt końcowy HTTP obsługujący ogólne wymagania związane z komunikatami z użyciem tematów w przestrzeni nazw.
  • Punkt końcowy MQTT dla komunikatów IoT lub rozwiązań korzystających z protokołu MQTT.

Przestrzeń nazw zapewnia również zintegrowane z systemem DNS punkty końcowe sieci. Zapewnia również szereg funkcji kontroli dostępu i zarządzania integracją sieci, takich jak filtrowanie publicznych adresów IP i łącza prywatne. Jest to również kontener tożsamości zarządzanych używanych dla zawartych zasobów w przestrzeni nazw.

Oto kilka dodatkowych kwestii dotyczących przestrzeni nazw:

  • Przestrzeń nazw to śledzony zasób z właściwościami tags i location Po utworzeniu możesz go znaleźć na resources.azure.com.
  • Nazwa przestrzeni nazw może mieć długość od 3 do 50 znaków. Może zawierać znaki alfanumeryczne, łączniki (-) oraz brak spacji.
  • Nazwa musi być unikatowa dla każdego regionu.

Jednostki przepływności

Jednostki przepustowości (TU) definiują przepustowość zdarzeń przychodzących i wychodzących w przestrzeniach nazw. Aby uzyskać więcej informacji, zobacz Limity przydziału i limity usługi Azure Event Grid.

Automatyczne skalowanie

Autoscale automatycznie dostosowuje liczbę jednostek przepustowości przypisanych do przestrzeni nazw Event Grid na podstawie ruchu w czasie rzeczywistym i wykorzystania zasobów. Stale monitoruje kluczowe wskaźniki wydajności i skaluje pojemność w ramach minimalnych i maksymalnych limitów, które konfigurujesz. Takie zachowanie pomaga utrzymać stałą wydajność podczas skoków obciążenia pracą i zmniejsza koszty w okresach o niskiej aktywności bez konieczności ręcznej interwencji.

Aby użyć Autoscale, włączasz je w przestrzeni nazw i określasz:

  • Jednostki o minimalnej przepustowości: Minimalna przepustowość. Przestrzeń nazw nie skaluje się poniżej tej wartości.
  • Jednostki o maksymalnym przepustowości: Limit wydajności. Przestrzeń nazw nie skaluje się powyżej tej wartości.

Event Grid ocenia wykorzystanie na podstawie napływu i odpływu zdarzeń, częstotliwości publikowania komunikatów przychodzących i wychodzących MQTT oraz liczby zarejestrowanych klientów MQTT. Gdy dowolna kategoria przekroczy próg skalowania w górę, przydzielanych jest więcej jednostek TU. Gdy wszystkie kategorie spadną poniżej progu redukcji, TU są zwalniane. Okresy schładzania między operacjami skalowania zapobiegają szybkim oscylacjom.

Automatyczne skalowanie jest przydatne w przypadku obciążeń MQTT, gdzie dystrybucja wiadomości do wielu odbiorców i wzrost liczby subskrypcji mogą szybko się zmieniać, gdy urządzenia łączą się i rozłączają. Jest też przydatny do zadań event brokera przy dynamicznych wzorcach ruchu.

Szczegółowe informacje o konfiguracji i limitach pojemności dla poszczególnych jednostek TU można znaleźć w omówieniu funkcji Autoscale oraz w przewodniku z instrukcjami.

Tematy

Temat zawiera zdarzenia, które zostały opublikowane w usłudze Event Grid. Zazwyczaj używasz zasobu tematu do zbierania powiązanych zdarzeń. Tematy w przestrzeni nazw są często nazywane tematami przestrzeni nazw.

Tematy dotyczące przestrzeni nazw

Tematy przestrzeni nazw to tematy tworzone w przestrzeni nazw usługi Event Grid. Aplikacja publikuje zdarzenia w punkcie końcowym przestrzeni nazw HTTP, określając temat przestrzeni nazw, w którym publikowane zdarzenia są logicznie zawarte. Podczas projektowania aplikacji zdecyduj, ile tematów chcesz utworzyć. W przypadku stosunkowo dużych rozwiązań utwórz temat przestrzeni nazw dla każdej kategorii powiązanych zdarzeń. Rozważmy na przykład aplikację, która zarządza kontami użytkowników i inną aplikacją dotyczącą zamówień klientów. Jest mało prawdopodobne, że wszyscy subskrybenci zdarzeń chcą otrzymywać zdarzenia z obu aplikacji. Aby rozdzielić obawy, utwórz dwa tematy przestrzeni nazw: jeden dla każdej aplikacji. Pozwól konsumentom zdarzeń subskrybować temat zgodnie ze swoimi wymaganiami. W przypadku niewielkich rozwiązań możesz preferować wysyłanie wszystkich zdarzeń do jednego tematu.

Tematy w przestrzeni nazw obsługują dostarczanie w trybie ściągania i dostarczanie w trybie wypychania. Zobacz kiedy używać dostarczania w trybie pull lub push, aby zdecydować, czy dostarczanie w trybie pull jest właściwym podejściem w zależności od Twoich wymagań.

Subskrypcje zdarzeń

Subskrypcja zdarzeń to zasób konfiguracyjny powiązany z jednym tematem. Między innymi użyj subskrypcji wydarzenia, aby ustawić kryteria wyboru wydarzenia, które definiują kolekcję wydarzeń dostępnych dla subskrybenta spośród całego zestawu wydarzeń dostępnych w danym temacie. Zdarzenia można filtrować zgodnie z wymaganiami subskrybenta. Można na przykład filtrować zdarzenia według ich typu zdarzenia. Możesz też zdefiniować kryteria filtrowania właściwości danych zdarzeń, jeśli użyjesz obiektu JSON jako wartości dla właściwości danych . Więcej informacji o właściwościach zasobów można znaleźć w dokumentacji API Event Grid REST .

Diagram przedstawiający temat i skojarzone subskrypcje zdarzeń.

Aby zapoznać się z przykładem tworzenia subskrypcji dla tematów przestrzeni nazw, zobacz Publikowanie i używanie komunikatów przy użyciu tematów przestrzeni nazw przy użyciu interfejsu wiersza polecenia.

Uwaga

Subskrypcje zdarzeń w ramach tematu przestrzeni nazw charakteryzują się uproszczonym modelem zasobów w porównaniu do modelu używanego dla tematów niestandardowych, domenowych, partnerskich i systemowych (Event Grid Basic). Aby uzyskać więcej informacji, zobacz tworzenie, wyświetlanie i zarządzanie subskrypcjami zdarzeń.

Dostarczanie przez pobieranie

W przypadku dostarczania przez pobieranie aplikacja łączy się z usługą Event Grid, aby odczytywać komunikaty z użyciem semantyki podobnej do kolejki. Kiedy aplikacje łączą się z usługą Event Grid, aby odbierać zdarzenia, kontrolują tempo i czas ich odbierania. Aplikacje konsumenckie mogą również używać prywatnych punktów końcowych podczas nawiązywania połączenia z usługą Event Grid w celu odczytywania zdarzeń przy użyciu prywatnej przestrzeni IP.

Dostarczanie w trybie pull obsługuje następujące operacje służące do odczytywania komunikatów i kontrolowania ich stanu: odbieranie, potwierdzanie, zwalnianie, odrzucanie oraz odnawianie blokady. Aby uzyskać więcej informacji, zobacz omówienie dostarczania typu pull.

Struktura danych przy odbieraniu zdarzeń przy użyciu dostarczania w trybie pull

Gdy dostarczasz zdarzenia przy użyciu dostarczania przez ściąganie, usługa Event Grid zawiera tablicę obiektów, która z kolei zawiera obiekty event i brokerProperties. Wartością właściwości event jest zdarzenie CloudEvent dostarczone w trybie zawartości strukturalnej. Obiekt brokerProperties zawiera token blokady skojarzony z dostarczonym rozwiązaniem CloudEvent. Następujący obiekt JSON to przykładowa odpowiedź z operacji odbierania , która zwraca dwa zdarzenia:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Dostarczanie typu push

W przypadku dostarczania wypychanego usługa Event Grid wysyła zdarzenia do miejsca docelowego skonfigurowanego w subskrypcji zdarzeń w trybie push. Zapewnia niezawodną logikę ponawiania prób w przypadku, gdy miejsce docelowe nie może odbierać zdarzeń.

Ważne

Dostarczanie wypychanych przestrzeni nazw usługi Event Grid obecnie obsługuje usługę Azure Event Hubs jako miejsce docelowe. W przyszłości przestrzenie nazw usługi Event Grid będą obsługiwać więcej miejsc docelowych, w tym wszystkich miejsc docelowych obsługiwanych przez usługę Event Grid Basic.

Dostarczanie zdarzeń usługi Event Hubs

Usługa Event Grid używa zestawu SDK usługi Event Hubs do wysyłania zdarzeń do usługi Event Hubs przy użyciu protokołu AMQP. Zdarzenia są wysyłane jako tablica bajtów z każdym elementem w tablicy zawierającej element CloudEvent.

Dostarczanie przez wypychanie i pobieranie

Usługa Event Grid obsługuje dostarczanie zdarzeń w modelu wypychania i ściągania przy użyciu HTTP. W przypadku dostarczania wypychającego w subskrypcji zdarzeń definiuje się miejsce docelowe — webhook lub usługę Azure — do którego usługa Event Grid wysyła zdarzenia. W przypadku dostarczania w trybie pull aplikacje subskrybentów łączą się z usługą Event Grid, aby odbierać zdarzenia. Dostarczanie w trybie pull jest obsługiwane dla tematów w przestrzeni nazw Event Grid.

Ważne

Usługa Event Hubs jest obsługiwana jako element docelowy subskrypcji tematów w przestrzeni nazw. W kolejnych wersjach przestrzenie nazw usługi Event Grid będą obsługiwać wszystkie miejsca docelowe obecnie dostępne w usłudze Event Grid Basic, a także dodatkowe miejsca docelowe.

Diagram ogólny przedstawiający dostarczanie wypychające i dostarczanie przez pobieranie oraz rodzaje wykorzystywanych zasobów.

Kiedy używać dostarczania typu push, a kiedy typu pull

Poniżej przedstawiono ogólne wskazówki, które pomogą Ci zdecydować, kiedy stosować dostarczanie typu pull lub push.

Dostarczanie przez pobieranie

  • Potrzebujesz pełnej kontroli co do tego, kiedy odbierać zdarzenia. Na przykład aplikacja może nie być przez cały czas, nie wystarczająco stabilna lub przetwarzać dane w określonym czasie.
  • Potrzebujesz pełnej kontroli nad przetwarzaniem zdarzeń. Na przykład usługa podrzędna lub warstwa w aplikacji konsumenta ma problem uniemożliwiający przetwarzanie zdarzeń. W takim przypadku interfejs API dostarczania w trybie pull umożliwia aplikacji konsumenta zwrócenie wcześniej odczytanego zdarzenia brokerowi, aby mogło zostać dostarczone później.
  • Chcesz używać łączy prywatnych przy odbieraniu zdarzeń, co jest możliwe tylko w przypadku dostarczania typu pull, a nie typu push.
  • Nie masz możliwości udostępnienia punktu końcowego i korzystania z dostarczania w trybie push, ale możesz połączyć się z usługą Event Grid, aby odbierać zdarzenia.

Dostarczanie typu push

  • Chcesz uniknąć ciągłego sondowania, aby określić, czy nastąpiła zmiana stanu systemu. Zamiast tego używasz usługi Event Grid do wysyłania zdarzeń do Ciebie w momencie wystąpienia zmian stanu.
  • Masz aplikację, która nie może wykonywać wywołań wychodzących. Na przykład Organizacja może być zaniepokojona eksfiltracją danych. Jednak aplikacja może odbierać zdarzenia za pośrednictwem publicznego punktu końcowego.