Udostępnij za pośrednictwem


Rejestr schematów w usłudze Azure Event Hubs

Rejestr schematów w usłudze Azure Event Hubs ma wiele korzyści. Rejestr schematów pomaga zachować spójność danych, uprościć ewolucję schematu, zwiększyć współdziałanie i zmniejszyć nakład pracy programistycznych w luźno powiązanych przepływach pracy i przepływach pracy przesyłania strumieniowego zdarzeń. Duże organizacje rozproszone korzystające ze scentralizowanego repozytorium schematów mogą używać rejestru schematów w celu osiągnięcia wysoce niezawodnego przetwarzania danych i zapewniania ładu przy niewielkim narzucie operacyjnym.

Rejestry schematów w usłudze Azure Event Hubs spełniają wiele ról w scenariuszach przesyłania strumieniowego zdarzeń opartych na schemacie:

  • Udostępnianie repozytorium, w którym można zarejestrować, zarządzać i ewoluować wiele schematów
  • Zarządzanie ewolucją schematu za pomocą wielu reguł zgodności
  • Przeprowadzanie walidacji danych dla wszystkich danych schematyzowanych
  • Udostępnianie bibliotek po stronie klienta (serializatorów i deserializacji) dla producentów i konsumentów
  • Zwiększanie wydajności przepływności sieci przez przekazanie identyfikatora schematu zamiast definicji schematu dla każdego ładunku

Rejestry schematów w usłudze Azure Event Hubs są obsługiwane w warstwach Standardowa, Premium i Dedicated.

Składniki rejestru schematów

Rejestr schematów jest częścią przestrzeni nazw usługi Event Hubs, ale może być również używany z innymi brokerami komunikatów lub zdarzeń, w tym z usługami obsługi komunikatów platformy Azure. Obejmuje ona wiele grup schematów, które działają jako logiczne grupowanie schematów i mogą być zarządzane niezależnie od innych grup schematów.

Diagram przedstawiający składniki rejestru schematów w usłudze Azure Event Hubs.

Schematy

W dowolnym luźno powiązanym systemie wiele aplikacji komunikuje się przede wszystkim za pośrednictwem danych. Schematy definiują strukturę danych w sposób deklaratywny. W rezultacie umowa między aplikacjami producentów i konsumentów jest dobrze zdefiniowana, zapewniając niezawodne przetwarzanie na dużą skalę.

Definicja schematu obejmuje:

  • Pola: poszczególne elementy danych, takie jak nazwa, tytuł książki lub adres.
  • Typy danych: typ danych, które mogą być przechowywane, takie jak ciąg, data/godzina lub tablica.
  • Struktura: sposób organizowania pól, takich jak zagnieżdżone struktury lub tablice.

Schematy definiują umowę między producentami a konsumentami. Schemat zdefiniowany w rejestrze schematów usługi Event Hubs pomaga zarządzać kontraktem poza danymi zdarzeń, co eliminuje obciążenie ładunku.

Formaty schematu

Formaty schematu służą do określania sposobu, w jaki schemat jest ustrukturyzowany i zdefiniowany. Każdy format zawiera szczegółowe wskazówki i składnię definiującą strukturę zdarzeń używanych do przesyłania strumieniowego zdarzeń.

Schemat Avro

Apache Avro to popularny system serializacji danych, który korzysta z kompaktowego formatu binarnego i zapewnia możliwości ewolucji schematu.

Aby dowiedzieć się więcej o korzystaniu z formatu schematu Avro z rejestrem schematów usługi Event Hubs, zobacz:

Schemat systemu JSON

Schemat JSON (JavaScript Object Notation) to ustandaryzowany sposób definiowania struktury i typów danych zdarzeń. Schemat JSON umożliwia niezawodne i niezawodne użycie formatu danych JSON w strumieniu zdarzeń.

Aby dowiedzieć się więcej na temat używania formatu schematu JSON z rejestrem schematów usługi Event Hubs, zobacz How to use a schema registry with Kafka and JSON schema (Jak używać rejestru schematów platformy Kafka i formatu JSON).

Bufory protokołu

protokołu (Protobuf) to neutralny dla języka, neutralny dla platformy, rozszerzalny mechanizm serializacji danych ustrukturyzowanych. Służy do wydajnego definiowania struktur danych i serializacji ich w kompaktowym formacie binarnym.

Grupy schematów

Grupy schematów to logiczne grupy podobnych schematów, które są zorganizowane zgodnie z kryteriami biznesowymi. Grupa schematów zawiera:

  • Wiele definicji schematu.
  • Wiele wersji określonego schematu.
  • Metadane dotyczące typu schematu i zgodności wszystkich schematów w grupie.

Grupę schematów można traktować jako podzbiór rejestru schematów, który jest zgodny z określoną aplikacją lub jednostką organizacyjną z oddzielnym modelem autoryzacji. Ta dodatkowa granica zabezpieczeń pomaga zapewnić, że metadane i wpisy tajne handlowe nie wyciekają w modelu usług udostępnionych. Umożliwia również właścicielom aplikacji zarządzanie schematami niezależnie od innych aplikacji, które współużytkuje tę samą przestrzeń nazw.

Ewolucja schematu

Schematy muszą ewoluować wraz z wymaganiami biznesowymi producentów i konsumentów. Rejestr schematów obsługuje ewolucję schematu, wprowadzając tryby zgodności na poziomie grupy schematów. Podczas tworzenia grupy schematów można określić tryb zgodności schematów uwzględninych w tej grupie schematów. Po zaktualizowaniu schematu zmiana musi być zgodna z przypisanym trybem zgodności, aby można było utworzyć nową wersję schematu.

Ewolucja schematu jest obsługiwana tylko w przypadku formatu schematu Avro.

Rejestr schematów jest obsługiwany w następujących trybach zgodności.

Zgodność ze starszymi wersjami

Tryb zgodności z poprzednimi wersjami umożliwia kodowi odbiorcy używanie nowej wersji schematu i przetwarzania komunikatów ze starą wersją schematu. Tryb zgodności z poprzednimi wersjami umożliwia wprowadzenie następujących zmian w schemacie:

  • Usuwanie pól
  • Dodawanie pól opcjonalnych

Zgodność z przekazywaniem

Zgodność z przekazywaniem umożliwia kodowi odbiorcy używanie starej wersji schematu i odczytywanie komunikatów przy użyciu nowego schematu. Tryb zgodności przekazywania umożliwia wprowadzanie następujących zmian w schemacie:

  • Dodaj pola
  • Usuwanie pól opcjonalnych

Brak zgodności

None Gdy jest używany tryb zgodności, rejestr schematów nie przeprowadza żadnych testów zgodności podczas aktualizowania schematów.

Zestawy SDK klienta

Do uwzględnienia serializatora Avro można użyć jednej z następujących bibliotek. Za pomocą serializatorów Avro można serializować i deserializować ładunki zawierające identyfikatory schematu dla rejestru schematów i danych zakodowanych w formacie Avro:

Język programowania SDK Przykłady
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro Przykłady dla platformy .NET
Java azure-data-schemaregistry-avro Przykłady w języku Java
Python azure-schemaregistry-avroserializer Przykłady w języku Python
JavaScript @azure/schema-registry-avro Przykłady środowiska NodeJS

Ponadto poniższe biblioteki są również dostępne na podstawie obciążeń.

Limity

Aby uzyskać limity (takie jak liczba schematów, których można użyć w przestrzeni nazw) usługi Event Hubs, zobacz Event Hubs quotas and limits (Limity i limity usługi Event Hubs).

Kontrola dostępu na podstawie ról na platformie Azure

Aby programowo uzyskać dostęp do rejestru schematów, wykonaj następujące kroki:

  1. Zarejestruj aplikację w usłudze Microsoft Entra ID.
  2. Dodaj podmiot zabezpieczeń aplikacji do jednej z następujących ról kontroli dostępu na podstawie ról (RBAC) platformy Azure na poziomie przestrzeni nazw.
Rola Opis
Właściciel Odczytywanie, zapisywanie i usuwanie grup i schematów rejestru schematów
Współautor Odczytywanie, zapisywanie i usuwanie grup i schematów rejestru schematów
Czytelnik rejestru schematów Odczytywanie i wyświetlanie listy grup rejestru schematów i schematów
Współautor rejestru schematów Odczytywanie, zapisywanie i usuwanie grup i schematów rejestru schematów

Aby dowiedzieć się, jak utworzyć i zarejestrować aplikację przy użyciu witryny Azure Portal, zobacz Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft. Potrzebujesz identyfikatora klienta (identyfikatora aplikacji), identyfikatora dzierżawy i wpisu tajnego do użycia w kodzie.