Co to jest usługa Azure Event Hubs dla platformy Apache Kafka

W tym artykule wyjaśniono, jak za pomocą usługi Azure Event Hubs przesyłać strumieniowo dane z aplikacji platformy Apache Kafka bez konieczności samodzielnego konfigurowania klastra platformy Kafka .

Uwaga

Ta funkcja jest obsługiwana tylko w warstwach Standardowa, Premium i Dedykowana .

Omówienie

Usługa Azure Event Hubs udostępnia punkt końcowy platformy Apache Kafka w centrum zdarzeń, który umożliwia użytkownikom łączenie się z centrum zdarzeń przy użyciu protokołu Kafka. Często można używać punktu końcowego platformy Kafka centrum zdarzeń z aplikacji bez żadnych zmian w kodzie. Zmodyfikujesz tylko konfigurację, czyli zaktualizujesz parametry połączenia w konfiguracjach, aby wskazać punkt końcowy platformy Kafka uwidoczniony przez centrum zdarzeń zamiast wskazywać klaster platformy Kafka. Następnie możesz rozpocząć przesyłanie strumieniowe zdarzeń z aplikacji, które używają protokołu Kafka do centrów zdarzeń, które są równoważne tematom platformy Kafka.

Uwaga

Usługa Event Hubs dla ekosystemów platformy Kafka obsługuje platformę Apache Kafka w wersji 1.0 lub nowszej.

Mapowanie koncepcyjne platformy Apache Kafka i usługi Azure Event Hubs

Koncepcyjnie platforma Kafka i usługa Event Hubs są bardzo podobne. Oba te dzienniki są partycjonowane utworzone na potrzeby przesyłania strumieniowego danych, gdzie klient kontroluje, która część zachowanego dziennika chce odczytać. W poniższej tabeli przedstawiono pojęcia dotyczące platformy Kafka i usługi Event Hubs.

Koncepcja platformy Kafka Koncepcja usługi Event Hubs
Klaster Przestrzeń nazw
Temat Centrum zdarzeń
Partycja Partycja
Grupa konsumentów Grupa konsumentów
Przesunięcie Przesunięcie

Kluczowe różnice między platformą Apache Kafka i usługą Azure Event Hubs

Chociaż platforma Apache Kafka to oprogramowanie, które zwykle trzeba zainstalować i obsługiwać, usługa Event Hubs jest w pełni zarządzaną usługą natywną dla chmury. Nie ma serwerów, dysków ani sieci do zarządzania i monitorowania i nie ma brokerów do rozważenia lub skonfigurowania, kiedykolwiek. Przestrzeń nazw, która jest punktem końcowym z w pełni kwalifikowaną nazwą domeny, a następnie utworzysz usługę Event Hubs (tematy) w tej przestrzeni nazw.

Aby uzyskać więcej informacji na temat usługi Event Hubs i przestrzeni nazw, zobacz Funkcje usługi Event Hubs. Jako usługa w chmurze usługa Event Hubs używa jednego stabilnego wirtualnego adresu IP jako punktu końcowego, więc klienci nie muszą wiedzieć o brokerach ani maszynach w klastrze. Mimo że usługa Event Hubs implementuje ten sam protokół, ta różnica oznacza, że cały ruch platformy Kafka dla wszystkich partycji jest przewidywalnie kierowany przez ten jeden punkt końcowy, a nie wymaga dostępu zapory dla wszystkich brokerów klastra.

Skalowanie w usłudze Event Hubs jest kontrolowane przez liczbę zakupionych jednostek przepływności (TU) lub jednostek przetwarzania. Jeśli włączysz funkcję automatycznego rozszerzania dla przestrzeni nazw warstwy standardowej, usługa Event Hubs automatycznie skaluje w górę jednostki TU po osiągnięciu limitu przepływności. Ta funkcja działa również z obsługą protokołu Apache Kafka. W przypadku przestrzeni nazw warstwy Premium można zwiększyć liczbę jednostek przetwarzania przypisanych do przestrzeni nazw.

Czy platforma Apache Kafka jest właściwym rozwiązaniem dla obciążenia?

Pochodzące z tworzenia aplikacji przy użyciu platformy Apache Kafka warto również zrozumieć, że usługa Azure Event Hubs jest częścią floty usług, która obejmuje również usługę Azure Service Bus i usługę Azure Event Grid.

Podczas gdy niektórzy dostawcy komercyjnych dystrybucji platformy Apache Kafka mogą sugerować, że apache Kafka jest jednym przystankiem dla wszystkich potrzeb platformy obsługi komunikatów, rzeczywistość polega na tym, że platforma Apache Kafka nie implementuje, na przykład wzorzec kolejki konkurujących konsumentów , nie ma obsługi publikowania-subskrybowania na poziomie, który umożliwia subskrybentom dostęp do komunikatów przychodzących na podstawie reguł ocenianych przez serwer innych niż zwykłe przesunięcia, nie ma możliwości śledzenia cyklu życia zadania zainicjowanego przez komunikat lub sidelining błędnych komunikatów w kolejce utraconych komunikatów, z których wszystkie są podstawą dla wielu scenariuszy obsługi komunikatów w przedsiębiorstwie.

Aby zrozumieć różnice między wzorcami i wzorcem, które najlepiej objęły usługę, zobacz Asynchroniczne opcje obsługi komunikatów na platformie Azure . Jako użytkownik platformy Apache Kafka można stwierdzić, że ścieżki komunikacyjne, które zostały do tej pory zrealizowane za pomocą platformy Kafka, można zrealizować z znacznie mniej podstawową złożonością i jeszcze bardziej zaawansowanymi możliwościami przy użyciu usługi Event Grid lub Service Bus.

Jeśli potrzebujesz określonych funkcji platformy Apache Kafka, które nie są dostępne za pośrednictwem interfejsu usługi Event Hubs dla platformy Apache Kafka lub jeśli wzorzec implementacji przekracza limity przydziału usługi Event Hubs, możesz również uruchomić natywny klaster Platformy Apache Kafka w usłudze Azure HDInsight.

Zabezpieczenia i uwierzytelnianie

Za każdym razem, gdy publikujesz lub zużywasz zdarzenia z usługi Event Hubs dla platformy Kafka, klient próbuje uzyskać dostęp do zasobów usługi Event Hubs. Chcesz upewnić się, że zasoby są dostępne przy użyciu autoryzowanej jednostki. W przypadku korzystania z protokołu Apache Kafka z klientami można ustawić konfigurację uwierzytelniania i szyfrowania przy użyciu mechanizmów SASL. W przypadku korzystania z usługi Event Hubs dla platformy Kafka wymaga szyfrowania TLS (ponieważ wszystkie dane przesyłane za pomocą usługi Event Hubs są szyfrowane przy użyciu protokołu TLS), można to zrobić, określając opcję SASL_SSL w pliku konfiguracji.

Usługa Azure Event Hubs oferuje wiele opcji autoryzacji dostępu do bezpiecznych zasobów.

  • OAuth 2.0
  • Sygnatura dostępu współdzielonego (SAS)

OAuth 2.0

Usługa Event Hubs integruje się z identyfikatorem Entra firmy Microsoft, który zapewnia zgodny ze standardem OAuth 2.0 scentralizowany serwer autoryzacji. Za pomocą identyfikatora Entra firmy Microsoft możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić precyzyjnych uprawnień tożsamościom klienta. Tej funkcji można używać z klientami platformy Kafka, określając SASL_SSL dla protokołu i OAUTHBEARER dla mechanizmu. Aby uzyskać szczegółowe informacje na temat ról i poziomów platformy Azure w celu określania zakresu dostępu, zobacz Autoryzowanie dostępu za pomocą identyfikatora Entra firmy Microsoft.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler

Uwaga

Powyższe właściwości konfiguracji są przeznaczone dla języka programowania Java. Przykłady pokazujące, jak używać protokołu OAuth z usługą Event Hubs dla platformy Kafka przy użyciu różnych języków programowania, zobacz przykłady w witrynie GitHub.

Sygnatura dostępu współdzielonego (SAS)

Usługa Event Hubs udostępnia również sygnatury dostępu współdzielonego (SAS) na potrzeby delegowanego dostępu do usługi Event Hubs dla zasobów platformy Kafka. Autoryzowanie dostępu przy użyciu mechanizmu opartego na tokenach OAuth 2.0 zapewnia doskonałe zabezpieczenia i łatwość użycia za pośrednictwem sygnatury dostępu współdzielonego. Wbudowane role mogą również wyeliminować potrzebę autoryzacji opartej na listach ACL, która musi być utrzymywana i zarządzana przez użytkownika. Tej funkcji można używać z klientami platformy Kafka, określając SASL_SSL dla protokołu i plain dla mechanizmu.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

Ważne

Zastąp {YOUR.EVENTHUBS.CONNECTION.STRING} element parametry połączenia przestrzeni nazw usługi Event Hubs. Aby uzyskać instrukcje dotyczące uzyskiwania parametry połączenia, zobacz Pobieranie parametry połączenia usługi Event Hubs. Oto przykładowa konfiguracja: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Uwaga

W przypadku korzystania z uwierzytelniania sygnatury dostępu współdzielonego z klientami platformy Kafka nawiązane połączenia nie są rozłączane po wygenerowaniu klucza SYGNATURy dostępu współdzielonego.

Uwaga

Wygenerowane tokeny sygnatury dostępu współdzielonego nie są obsługiwane w przypadku korzystania z usługi Event Hubs dla punktu końcowego platformy Apache Kafka.

Przykłady

Aby zapoznać się z samouczkiem z instrukcjami krok po kroku dotyczącymi tworzenia centrum zdarzeń i uzyskiwania do niego dostępu przy użyciu sygnatury dostępu współdzielonego lub protokołu OAuth, zobacz Szybki start: przesyłanie strumieniowe danych za pomocą usługi Event Hubs przy użyciu protokołu Kafka.

Inne funkcje usługi Azure Event Hubs

Funkcja usługi Event Hubs dla platformy Apache Kafka jest jednym z trzech protokołów współbieżnie dostępnych w usłudze Azure Event Hubs, uzupełniając protokoły HTTP i AMQP. Możesz pisać przy użyciu dowolnego z tych protokołów i odczytywać je za pomocą innych, aby twoi obecni producenci platformy Apache Kafka mogli kontynuować publikowanie za pośrednictwem platformy Apache Kafka, ale czytelnik może skorzystać z natywnej integracji z interfejsem AMQP usługi Event Hubs, takim jak usługa Azure Stream Analytics lub Azure Functions. Z drugiej strony możesz łatwo zintegrować usługę Azure Event Hubs z sieciami routingu amQP jako docelowy punkt końcowy, a jednocześnie odczytywać dane za pośrednictwem integracji platformy Apache Kafka.

Ponadto funkcje usługi Event Hubs, takie jak Capture, które umożliwiają niezwykle ekonomiczne długoterminowe archiwizowanie za pośrednictwem usług Azure Blob Storage i Azure Data Lake Storage oraz geo disaster-Recovery , współpracują również z funkcją Event Hubs for Kafka.

Idempotentność

Usługa Azure Event Hubs dla platformy Apache Kafka obsługuje zarówno producentów idempotentnych, jak i użytkowników idempotentnych.

Jednym z podstawowych zestawów usługi Azure Event Hubs jest koncepcja co najmniej jednokrotnego dostarczania. Takie podejście gwarantuje, że zdarzenia będą zawsze dostarczane. Oznacza to również, że zdarzenia mogą być odbierane więcej niż raz, nawet wielokrotnie, przez konsumentów, takich jak funkcja. Z tego powodu ważne jest, aby odbiorca obsługiwał wzorzec idempotentnego konsumenta .

Różnice między funkcjami platformy Apache Kafka

Celem usługi Event Hubs dla platformy Apache Kafka jest zapewnienie dostępu do funkcji usługi Azure Event Hubs aplikacjom, które są zablokowane w interfejsie API platformy Apache Kafka i w przeciwnym razie muszą być wspierane przez klaster platformy Apache Kafka.

Jak wyjaśniono powyżej, flota usługi Azure Messaging zapewnia bogaty i niezawodny zasięg dla wielu scenariuszy obsługi komunikatów, a mimo że następujące funkcje nie są obecnie obsługiwane przez obsługę interfejsu API platformy Apache Kafka w usłudze Event Hubs, wskazujemy, gdzie i w jaki sposób jest dostępna żądana funkcja.

Transakcje

Usługa Azure Service Bus ma niezawodną obsługę transakcji, która umożliwia odbieranie i rozliczanie komunikatów i sesji podczas wysyłania komunikatów wychodzących wynikających z przetwarzania komunikatów do wielu jednostek docelowych w ramach ochrony spójności transakcji. Zestaw funkcji nie tylko umożliwia dokładnie jednokrotne przetwarzanie każdego komunikatu w sekwencji, ale także pozwala uniknąć ryzyka nieumyślnego ponownego przetwarzania tych samych komunikatów przez innego konsumenta, co w przypadku platformy Apache Kafka. Usługa Service Bus jest zalecaną usługą dla obciążeń komunikatów transakcyjnych.

Kompresja

Funkcja kompresji po stronie klienta platformy Apache Kafka kompresuje partię wielu komunikatów do pojedynczego komunikatu po stronie producenta i dekompresuje partię po stronie konsumenta. Broker platformy Apache Kafka traktuje partię jako specjalny komunikat.

Deweloperzy aplikacji producenta platformy Kafka mogą włączyć kompresję komunikatów, ustawiając właściwość compression.type. W publicznej wersji zapoznawczej jedynym obsługiwanym algorytmem kompresji jest gzip.

Compression.type = none | gzip

Ta funkcja jest obecnie obsługiwana tylko w przypadku ruchu producentów i konsumentów platformy Apache Kafka. Użytkownik amQP może korzystać ze skompresowanego ruchu platformy Kafka jako dekompresowanych komunikatów. Ładunek dowolnego zdarzenia usługi Event Hubs jest strumieniem bajtów, a zawartość można skompresować za pomocą wybranego algorytmu, choć w publicznej wersji zapoznawczej, jedyną opcją jest gzip. Korzyści wynikające z korzystania z kompresji platformy Kafka to mniejszy rozmiar komunikatu, zwiększony rozmiar ładunku, który można przesyłać, oraz niższe użycie zasobów brokera komunikatów.

Strumienie platformy Kafka

Platforma Kafka Strumienie to biblioteka kliencka do analizy strumienia, która jest częścią projektu open source platformy Apache Kafka, ale jest oddzielona od brokera strumienia zdarzeń platformy Apache Kafka.

Najczęstszą przyczyną, dla której klienci usługi Azure Event Hubs proszą o pomoc techniczną platformy Kafka Strumienie, jest to, że są zainteresowani produktem "ksqlDB" firmy Confluent. "ksqlDB" jest zastrzeżonym udostępnionym projektem źródłowym, który jest licencjonowany, tak aby żaden dostawca "oferujący oprogramowanie jako usługa, platforma jako usługa, infrastruktura jako usługa lub inne podobne Usługi online, które konkurują z produktami lub usługami Confluent" nie mogą korzystać z pomocy technicznej "ksqlDB". Praktycznie, jeśli używasz bazy danych ksqlDB, musisz samodzielnie obsługiwać platformę Kafka lub używać ofert w chmurze platformy Confluent. Postanowienia licencyjne mogą również mieć wpływ na klientów platformy Azure, którzy oferują usługi do celów wykluczonych przez licencję.

Autonomiczna i bez bazy danych ksqlDB platforma Kafka Strumienie ma mniej możliwości niż wiele alternatywnych struktur i usług, z których większość ma wbudowane interfejsy SQL przesyłania strumieniowego i wszystkie z nich są obecnie zintegrowane z usługą Azure Event Hubs:

Wymienione usługi i struktury mogą zazwyczaj uzyskiwać strumienie zdarzeń i odwoływać się do danych bezpośrednio z zróżnicowanego zestawu źródeł za pośrednictwem kart. Platforma Kafka Strumienie może pobierać dane tylko z platformy Apache Kafka, a projekty analityczne są więc zablokowane na platformie Apache Kafka. Aby korzystać z danych z innych źródeł, musisz najpierw zaimportować dane do platformy Apache Kafka przy użyciu platformy Kafka Połączenie.

Jeśli musisz użyć platformy Kafka Strumienie na platformie Azure, platforma Apache Kafka w usłudze HDInsight zapewni Ci tę opcję. Platforma Apache Kafka w usłudze HDInsight zapewnia pełną kontrolę nad wszystkimi aspektami konfiguracji platformy Apache Kafka, a jednocześnie jest w pełni zintegrowana z różnymi aspektami platformy Azure, od umieszczania domeny błędów/aktualizacji po izolację sieci po monitorowanie integracji.

Następne kroki

W tym artykule przedstawiono wprowadzenie do usługi Event Hubs dla platformy Kafka. Aby dowiedzieć się więcej, zobacz Przewodnik dla deweloperów platformy Apache Kafka dotyczący usługi Azure Event Hubs.

Aby zapoznać się z samouczkiem z instrukcjami krok po kroku dotyczącymi tworzenia centrum zdarzeń i uzyskiwania do niego dostępu przy użyciu sygnatury dostępu współdzielonego lub protokołu OAuth, zobacz Szybki start: przesyłanie strumieniowe danych za pomocą usługi Event Hubs przy użyciu protokołu Kafka.

Zapoznaj się również z przykładami OAuth w witrynie GitHub.