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.
Aby dowiedzieć się więcej na temat migrowania aplikacji platformy Kafka do usługi Azure Event Hubs, zobacz przewodnik migracji.
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 |
Funkcje platformy Apache Kafka obsługiwane w usłudze Azure Event Hubs
Strumienie platformy Kafka
Uwaga
Usługa Kafka Streams jest obecnie dostępna w publicznej wersji zapoznawczej w warstwie Premium i w warstwie Dedykowane.
Kafka Streams to biblioteka klienta do analizy strumienia, która jest częścią projektu open source apache Kafka, ale jest oddzielona od brokera zdarzeń platformy Apache Kafka.
Usługa Azure Event Hubs obsługuje bibliotekę klienta usługi Kafka Streams ze szczegółowymi informacjami i pojęciami dostępnymi tutaj.
Najczęstszą przyczyną, dla której klienci usługi Azure Event Hubs proszą o pomoc techniczną platformy Kafka Streams, 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ę.
Autonomiczne i bez bazy danych ksqlDB usługa Kafka Streams 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:
- Azure Stream Analytics
- Azure Synapse Analytics (za pośrednictwem funkcji przechwytywania usługi Event Hubs)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink w usłudze HDInsight w usłudze AKS
- Akka Streams
Transakcje platformy Kafka
Uwaga
Transakcje platformy Kafka są obecnie dostępne w publicznej wersji zapoznawczej w warstwie Premium i w warstwie Dedykowane.
Usługa Azure Event Hubs obsługuje transakcje platformy Kafka. Więcej szczegółów dotyczących pomocy technicznej i pojęć jest dostępnych tutaj
Kompresja
Uwaga
Kompresja platformy Kafka dla usługi Event Hubs jest obecnie obsługiwana tylko w warstwach Premium i Dedykowane.
Funkcja kompresji po stronie klienta w klientach platformy Apache Kafka oszczędza zasoby obliczeniowe i przepustowość, kompresując partię wielu komunikatów do pojedynczego komunikatu po stronie producenta i dekompresując 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. Usługa Azure Event Hubs obecnie obsługuje gzip
kompresję.
Compression.type = none | gzip
Chociaż funkcja jest 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.
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 dowiedzieć się, ż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 .
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.