Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Overview
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 řetězec připojení v konfiguracích tak, aby odkazoval na koncový bod Kafka, který vystavuje vaše centrum 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í.
Note
- Tato funkce je podporována pouze ve úrovních **Standard, Premium a Dedicated .
- Event Hubs pro ekosystémy Apache Kafka podporují 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 | Namespace |
| Topic | Centrum událostí |
| Partition | Partition |
| Spotřebitelská skupina | Skupina spotřebitelů |
| Offset | Offset |
Funkce Apache Kafka podporované ve službě Azure Event Hubs
Kafka Streams
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.
Note
Streamy Kafka jsou aktuálně ve verzi Public Preview na úrovni Premium a Dedicated.
Azure Event Hubs podporuje klientskou knihovnu Kafka Streams s podrobnostmi a koncepty dostupnými zde.
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 jiné podobné online služby, které konkurují produktům nebo službám Confluent, nesmí 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 na Azure Kubernetes Service
- Akka Streams
Transakce Kafka
Note
Transakce Kafka jsou aktuálně ve verzi Public Preview na úrovni Premium a Dedicated.
Azure Event Hubs podporuje transakce Kafka. Další podrobnosti o podpoře a konceptech najdete v tématu Transakce Apache Kafka.
Compression
Note
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 batch jako speciální zprávu.
Vývojáři aplikací producenta Kafka můžou povolit kompresi zpráv nastavením compression.type vlastnosti. Azure Event Hubs v současné době podporuje gzip kompresi.
Compression.type = none | gzip
I když je tato funkce podporována pouze pro přenosy producenta a spotřebitele Apache Kafka, spotřebitel AMQP může konzumovat komprimovaný provoz Kafka jako dekomprimované 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 Auto-Inflate pro obor názvů úrovně Standard, Event Hubs automaticky škáluje výpočetní jednotky (TUs), jakmile dosáhnete limitu propustnosti. Tato funkce také funguje s podporou protokolu Apache Kafka. U jmenného prostoru úrovně Premium můžete zvýšit počet jednotek zpracování přiřazených k jmennému prostoru.
Je Apache Kafka správným řešením pro vaši úlohu?
Pokud pocházíte z dokumentace k vytváření aplikací, které používají Apache Kafka, je také užitečné pochopit, že Azure Event Hubs je součástí flotily služeb, které zahrnují 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 místem pro všechny potřeby vaší 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á umožňuje odběratelům přístup k příchozím zprávám na základě jiných pravidel vyhodnocených serverem než prostých posunů. Nemá žádné zařízení ke sledování životního cyklu úlohy iniciované zprávou nebo odsunutí chybných zpráv do fronty nedoručených zpráv. Všechny tyto funkce 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 si uvědomili pomocí Platformy Kafka, 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 pokusí o 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 nastavte konfiguraci pro ověřování a šifrování pomocí mechanismů SASL. Při použití služby Event Hubs pro Kafka se vyžaduje šifrování TLS (protože všechna přenášená data se službou Event Hubs jsou šifrovaná protokolem TLS). V konfiguračním souboru můžete zadat možnost SASL_SSL.
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 . Pomocí 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í identitám klienta. Tuto funkci použijte u klientů Kafka zadáním SASL_SSL pro protokol a OAUTHBEARER pro mechanismus. Podrobnosti o rolích a úrovních Azure pro rozsah přístupu 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
Note
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. Vestavěné role také můžou eliminovat potřebu autorizace založené na ACL, kterou musíte 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}";
Important
Nahraďte {YOUR.EVENTHUBS.CONNECTION.STRING} připojovacím řetězcem pro váš Event Hubs namespace. Pokyny k získání připojovacího řetězce najdete v článku Získání připojovacího řetězce pro 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";
Note
Při použití ověřování SAS s klienty Kafka se vytvořená připojení při obnovení klíče SAS neodpojí.
Note
Generování tokenů sdíleného přístupového podpisu se nepodporuje při použití služby Event Hubs pro koncový bod Apache Kafka.
Samples
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.
Idempotency
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 mohou přijímat události více než jednou, a to i opakovaně. Z tohoto důvodu je důležité, aby příjemce podporoval model idempotentního příjemce .
Související obsah
Tento článek představuje službu 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.