Co je Azure Event Hubs pro Apache Kafka

Tento článek vysvětluje, jak můžete pomocí služby Azure Event Hubs streamovat data z aplikací Apache Kafka bez vlastního nastavení clusteru Kafka.

Poznámka:

Tato funkce se podporuje jenom ve úrovních Standard, Premium a Dedicated .

Přehled

Azure Event Hubs poskytuje koncový bod Apache Kafka v centru událostí, který umožňuje uživatelům připojit se k centru událostí pomocí protokolu Kafka. Koncový bod Kafka centra událostí můžete často používat z vašich aplikací bez jakýchkoli změn kódu. Upravíte pouze konfiguraci, tj. aktualizujete připojovací řetězec v konfiguracích tak, aby odkazovat na koncový bod Kafka vystavený centrem událostí místo odkazování na cluster Kafka. Potom můžete začít streamovat události z aplikací, které používají protokol Kafka do center událostí, které jsou ekvivalentní tématům Kafka.

Poznámka:

Event Hubs pro ekosystémy Kafka podporuje Apache Kafka verze 1.0 a novější.

Koncepční mapování Apache Kafka a Azure Event Hubs

Kafka a Event Hubs jsou koncepčně velmi podobné. Oba jsou rozdělené protokoly vytvořené pro streamovaná data, přičemž klient řídí, která část zachovaného protokolu chce číst. Následující tabulka mapuje koncepty mezi Kafka a Event Hubs.

Koncept Kafka Koncept služby Event Hubs
Cluster Obor názvů
Téma Centrum událostí
Oddíl Oddíl
Skupiny příjemců Skupiny příjemců
Odsazení Odsazení

Hlavní rozdíly mezi Apache Kafka a Azure Event Hubs

I když je Apache Kafka software, který obvykle potřebujete nainstalovat a provozovat, služba Event Hubs je plně spravovaná cloudová nativní služba. Neexistují žádné servery, disky ani sítě, které by bylo možné spravovat a monitorovat, a žádné zprostředkovatele, které by bylo potřeba vůbec zvážit nebo nakonfigurovat. Vytvoříte obor názvů, což je koncový bod s plně kvalifikovaným názvem domény, a pak v tomto oboru názvů vytvoříte službu Event Hubs (témata).

Další informace o službě Event Hubs a oborech názvů najdete v tématu Funkce služby Event Hubs. Služba Event Hubs jako cloudová služba používá jako koncový bod jednu stabilní virtuální IP adresu, takže klienti nemusí vědět o zprostředkovatelích nebo počítačích v clusteru. I když služba Event Hubs implementuje stejný protokol, tento rozdíl znamená, že veškerý provoz Kafka pro všechny oddíly se předvídatelně směruje přes tento jeden koncový bod, a nevyžaduje přístup brány firewall pro všechny zprostředkovatele clusteru.

Škálování ve službě Event Hubs se řídí počtem jednotek propustnosti (TU) nebo jednotek zpracování, které zakoupíte. Pokud povolíte funkci automatického nafukování pro obor názvů úrovně Standard, služba Event Hubs automaticky škáluje jednotky TU, jakmile dosáhnete limitu propustnosti. Tato funkce také funguje s podporou protokolu Apache Kafka. U oboru názvů úrovně Premium můžete zvýšit počet jednotek zpracování přiřazených k oboru názvů.

Je Apache Kafka správným řešením pro vaši úlohu?

Pochází z vytváření aplikací pomocí Apache Kafka, je také užitečné pochopit, že Azure Event Hubs je součástí flotily služeb, která zahrnuje také Azure Service Bus a Azure Event Grid.

Někteří poskytovatelé komerčních distribucí Apache Kafka můžou naznačovat, že Apache Kafka je univerzálním obchodem pro všechny potřeby platformy zasílání zpráv, skutečností je, že Apache Kafka například neimplementuje model fronty konkurenčních příjemců , nepodporuje publikování odběru na úrovni, která předplatitelům umožňuje přístup k příchozím zprávám založeným na pravidlech vyhodnocených serverem, než jsou prosté posuny, a nemá žádné zařízení ke sledování životního cyklu úlohy iniciované zprávou nebo bočním vložením chybných zpráv do fronty nedoručených zpráv, z nichž všechny jsou základem pro mnoho podnikových scénářů zasílání zpráv.

Pokud chcete porozumět rozdílům mezi vzory a vzory, které služba nejlépe pokrývá, podívejte se na možnosti asynchronního zasílání zpráv v doprovodných materiálech Azure . Jako uživatel Apache Kafka zjistíte, že komunikační cesty, které jste zatím s Platformou Kafka pochopili, je možné realizovat s mnohem méně základní složitostí a ještě výkonnějšími funkcemi pomocí event Gridu nebo služby Service Bus.

Pokud potřebujete konkrétní funkce Apache Kafka, které nejsou dostupné prostřednictvím služby Event Hubs pro rozhraní Apache Kafka nebo pokud vzor implementace překročí kvóty služby Event Hubs, můžete také spustit nativní cluster Apache Kafka v Azure HDInsight.

Zabezpečení a ověřování

Pokaždé, když publikujete nebo spotřebováváte události ze služby Event Hubs pro Kafka, se váš klient pokouší získat přístup k prostředkům služby Event Hubs. Chcete zajistit přístup k prostředkům pomocí autorizované entity. Při použití protokolu Apache Kafka s klienty můžete nastavit konfiguraci pro ověřování a šifrování pomocí mechanismů SASL. Pokud používáte službu Event Hubs pro Kafka, vyžaduje šifrování TLS (protože všechna přenášená data se službou Event Hubs jsou zašifrovaná protokolem TLS), je možné ji provést zadáním možnosti SASL_SSL v konfiguračním souboru.

Azure Event Hubs nabízí několik možností autorizace přístupu k vašim zabezpečeným prostředkům.

  • OAuth 2.0
  • Sdílený přístupový podpis (SAS)

OAuth 2.0

Event Hubs se integruje s Microsoft Entra ID, které poskytuje centralizovaný autorizační server kompatibilní s OAuth 2.0 . S Id Microsoft Entra můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit jemně odstupňovaná oprávnění vašim identitám klientů. Tuto funkci můžete použít s klienty Kafka zadáním SASL_SSL pro protokol a OAUTHBEARER pro mechanismus. Podrobnosti o rolích a úrovních Azure pro přístup k oboru najdete v tématu Autorizace přístupu pomocí ID Microsoft Entra.

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

Poznámka:

Výše uvedené vlastnosti konfigurace jsou určené pro programovací jazyk Java. Ukázky, které ukazují, jak používat OAuth se službou Event Hubs pro Kafka pomocí různých programovacích jazyků, najdete v ukázkách na GitHubu.

Sdílený přístupový podpis (SAS)

Služba Event Hubs také poskytuje sdílené přístupové podpisy (SAS) pro delegovaný přístup ke službě Event Hubs pro prostředky Kafka. Autorizace přístupu pomocí mechanismu založeného na tokenech OAuth 2.0 poskytuje vynikající zabezpečení a snadné použití přes SAS. Předdefinované role také můžou eliminovat potřebu autorizace založené na seznamu ACL, kterou musí uživatel spravovat a spravovat. Tuto funkci můžete použít s klienty Kafka zadáním SASL_SSL pro protokol a PLAIN pro mechanismus.

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}";

Důležité

Nahraďte {YOUR.EVENTHUBS.CONNECTION.STRING} připojovací řetězec pro obor názvů služby Event Hubs. Pokyny k získání připojovací řetězec najdete v tématu Získání připojovací řetězec služby Event Hubs. Tady je příklad konfigurace: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Poznámka:

Při použití ověřování SAS s klienty Kafka se vytvořená připojení při opětovném generování klíče SAS neodpojí.

Poznámka:

Generování tokenů sdíleného přístupového podpisu se při použití služby Event Hubs pro koncový bod Apache Kafka nepodporuje.

Ukázky

Kurz s podrobnými pokyny k vytvoření centra událostí a přístupu k němu pomocí SAS nebo OAuth najdete v rychlém startu: Streamování dat se službou Event Hubs pomocí protokolu Kafka.

Další funkce služby Azure Event Hubs

Funkce Event Hubs pro Apache Kafka je jedním ze tří protokolů současně dostupných ve službě Azure Event Hubs, která doplňuje PROTOKOL HTTP a AMQP. Můžete psát s libovolným z těchto protokolů a číst s jakýmkoli jiným, aby vaši aktuální producenti Apache Kafka mohli pokračovat v publikování prostřednictvím Apache Kafka, ale čtenář může těžit z nativní integrace s rozhraním AMQP služby Event Hubs, jako je Azure Stream Analytics nebo Azure Functions. Naopak můžete snadno integrovat Službu Azure Event Hubs do směrovacích sítí AMQP jako cílového koncového bodu a přesto číst data prostřednictvím integrací Apache Kafka.

Kromě toho funkce Event Hubs, jako je Capture, které umožňují extrémně nákladově efektivní dlouhodobé archivace prostřednictvím služby Azure Blob Storage a Azure Data Lake Storage a geografické zotavení po havárii také pracují s funkcí Event Hubs pro Kafka.

Idempotence

Azure Event Hubs pro Apache Kafka podporuje idempotentní producenty i idempotentní příjemce.

Jedním ze základních principů služby Azure Event Hubs je koncept aspoň jednoho doručení. Tento přístup zajišťuje, že se události budou vždy doručovat. Také to znamená, že příjemci, jako je funkce, mohou přijímat více než jednou, dokonce opakovaně. Z tohoto důvodu je důležité, aby příjemce podporoval model idempotentního příjemce .

Rozdíly mezi funkcemi u Apache Kafka

Cílem služby Event Hubs pro Apache Kafka je poskytnout přístup k funkcím služby Azure Event Hubs aplikacím, které jsou uzamčené do rozhraní Apache Kafka API, a jinak by bylo nutné je zazálohovat clusterem Apache Kafka.

Jak je vysvětleno výše, flotila zasílání zpráv Azure poskytuje bohaté a robustní pokrytí pro celou řadu scénářů zasílání zpráv, a přestože následující funkce nejsou v současné době podporovány prostřednictvím podpory služby Event Hubs pro rozhraní Apache Kafka API, uvádíme, kde a jak je k dispozici požadovaná funkce.

Transakce

Azure Service Bus má robustní podporu transakcí, která umožňuje příjem a vyrovnání zpráv a relací při odesílání odchozích zpráv, které jsou výsledkem zpracování zpráv do více cílových entit v rámci ochrany konzistence transakce. Sada funkcí umožňuje nejen přesně jednou zpracovat každou zprávu v sekvenci, ale také zabraňuje riziku neúmyslného opětovného zpracování stejných zpráv jako u Apache Kafka. Service Bus je doporučená služba pro úlohy transakčních zpráv.

Komprese

Funkce komprese na straně klienta Apache Kafka komprimuje dávku více zpráv do jedné zprávy na straně producenta a dekomprimuje dávku na straně příjemce. Zprostředkovatel Apache Kafka považuje dávku za zvláštní zprávu.

Vývojáři aplikací producenta Kafka mohou povolit kompresi zpráv nastavením vlastnosti compression.type. Ve verzi Public Preview je jediným podporovaným algoritmem komprese gzip.

Compression.type = none | gzip

Tato funkce se v současné době podporuje pouze pro producenta provozu Apache Kafka a uživatelský provoz. Příjemce AMQP může využívat komprimovaný provoz Kafka jako dekompresované zprávy. Datová část každé události event Hubs je bajtový datový proud a obsah je možné komprimovat pomocí algoritmu, který zvolíte ve verzi Public Preview, jedinou možností je gzip. Výhody použití komprese Kafka jsou menší velikostí zpráv, zvýšenou velikostí datové části, kterou můžete přenášet, a nižší spotřebou prostředků zprostředkovatele zpráv.

Toky Kafka

Kafka Toky je klientská knihovna pro analýzu datových proudů, která je součástí opensourcového projektu Apache Kafka, ale je oddělená od zprostředkovatele událostí Apache Kafka.

Nejčastějším důvodem, proč zákazníci služby Azure Event Hubs požádali o podporu platformy Kafka Toky, je to, že mají zájem o produkt "ksqlDB" společnosti Confluent. "ksqlDB" je proprietární sdílený zdrojový projekt, který je licencovaný tak, že žádný dodavatel "nenabízí software jako službu, platformu jako službu, infrastrukturu jako službu nebo jinou podobnou online služby, která soutěžijí s produkty nebo službami Confluent" je povoleno používat nebo nabízet podporu "ksqlDB". Prakticky platí, že pokud používáte ksqlDB, musíte buď sami provozovat Kafka, nebo musíte používat cloudové nabídky Společnosti Confluent. Licenční podmínky můžou mít vliv také na zákazníky Azure, kteří nabízejí služby za účelem vyloučení licence.

Samostatně a bez ksqlDB má kafka Toky méně funkcí než mnoho alternativních architektur a služeb, z nichž většina má integrovaná rozhraní SQL pro streamování a všechny z nich se dnes integrují se službou Azure Event Hubs:

Uvedené služby a architektury můžou obecně získávat streamy událostí a odkazovat data přímo z různorodé sady zdrojů prostřednictvím adaptérů. Kafka Toky může získávat pouze data z Apache Kafka a vaše analytické projekty jsou proto uzamčené do Apache Kafka. Pokud chcete používat data z jiných zdrojů, musíte nejprve importovat data do Apache Kafka pomocí architektury Kafka Připojení.

Pokud musíte použít architekturu Kafka Toky v Azure, poskytuje vám tato možnost Apache Kafka ve službě HDInsight. Apache Kafka ve službě HDInsight poskytuje úplnou kontrolu nad všemi aspekty konfigurace Apache Kafka a zároveň je plně integrovaná s různými aspekty platformy Azure, od umístění domény selhání/aktualizace až po izolaci sítě až po monitorování integrace.

Další kroky

Tento článek obsahuje úvod do služby Event Hubs pro Kafka. Další informace najdete v příručce pro vývojáře Apache Kafka pro Azure Event Hubs.

Kurz s podrobnými pokyny k vytvoření centra událostí a přístupu k němu pomocí SAS nebo OAuth najdete v rychlém startu: Streamování dat se službou Event Hubs pomocí protokolu Kafka.

Projděte si také ukázky OAuth na GitHubu.