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.
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.
Další informace o migraci aplikací Apache Kafka do služby Azure Event Hubs najdete v průvodci migrací.
Poznámka:
- Tato funkce se podporuje jenom ve úrovních Standard, Premium a Dedicated .
- Event Hubs pro ekosystémy Apache Kafka podporuje Apache Kafka verze 1.0 a novější.
Koncepční mapování Apache Kafka a Azure Event Hubs
Apache 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 Apache Kafka a Event Hubs.
Koncept Apache 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í |
Funkce Apache Kafka podporované ve službě Azure Event Hubs
Streamy Kafka
Kafka Streams je klientská knihovna pro analýzu streamů, která je součástí opensourcového projektu Apache Kafka, ale je oddělená od zprostředkovatele událostí Apache Kafka.
Poznámka:
Streamy Kafka jsou v současné době ve verzi Public Preview ve verzi Premium a na úrovni Dedicated.
Azure Event Hubs podporuje klientskou knihovnu Kafka Streams s podrobnostmi a koncepty, které jsou zde k dispozici.
Nejčastějším důvodem, proč zákazníci služby Azure Event Hubs požádali o podporu služby Kafka Streams, 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 mají streamy Kafka 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:
- Azure Stream Analytics
- Azure Synapse Analytics (přes Event Hubs Capture)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink ve službě HDInsight ve službě Azure Kubernetes Service
- Akka Streams
Transakce Kafka
Poznámka:
Transakce Kafka jsou aktuálně ve verzi Public Preview ve verzi Premium a na úrovni Dedicated.
Azure Event Hubs podporuje transakce Kafka. Další podrobnosti týkající se podpory a konceptů najdete tady.
Komprese
Poznámka:
Komprese Kafka pro službu Event Hubs se v současné době podporuje jenom na úrovních Premium a Dedicated.
Funkce komprese na straně klienta v klientech Apache Kafka šetří výpočetní prostředky a šířku pásma tím, že 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. Azure Event Hubs v současné době podporuje gzip
kompresi.
Compression.type = none | gzip
I když je tato funkce podporovaná jenom pro producenta provozu Apache Kafka a uživatelský provoz, spotřebitel AMQP může využívat komprimovaný provoz Kafka jako dekompresované zprávy.
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:
Tyto 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 spolu s protokoly 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.
Idempotentnost
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, aby se události vždy doručily. 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 .
Související obsah
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.