Použití Azure Event Hubs z Apache Kafka aplikací

Event Hubs poskytuje koncový bod kompatibilní s rozhraními APACHE KAFKA® Producer And Consumer API, která může používat většina existujících klientských aplikací Apache Kafka jako alternativu ke spuštění vlastního clusteru Apache Kafka. Event Hubs podporuje Apache Kafka rozhraní API producenta a konzumenta ve verzi 1.0 a novější.

Co nabízí Event Hubs kafka?

Funkce Event Hubs for Apache Kafka poskytuje hlavičku protokolu nad protokolem Azure Event Hubs, který je kompatibilní s klienty Apache Kafka sestavené pro server Apache Kafka verze 1.0 a novější a podporuje čtení i zápis do Event Hubs, které jsou ekvivalentní tématům Apache Kafka.

Koncový bod Event Hubs Kafka můžete často použít z aplikací beze změn kódu v porovnání s existujícím nastavením Kafka a pouze upravit konfiguraci: Aktualizujte připojovací řetězec v konfiguracích tak, aby odkazovat na koncový bod Kafka vystavený centrem událostí místo toho, aby odkazovat na cluster Kafka. Potom můžete začít streamovat události z aplikací, které používají protokol Kafka, do Event Hubs.

Koncepčně jsou kafka a Event Hubs velmi podobné: jedná se o rozdělené protokoly vytvořené pro streamovaná data, kdy klient řídí, kterou část zachovaného protokolu chce číst. Následující tabulka mapuje koncepty mezi Kafka a Event Hubs.

Konceptuální mapování kafka a centra událostí

Koncept Kafka Event Hubs konceptu
Cluster Obor názvů
Téma Centrum událostí
Oddíl Oddíl
Skupina uživatelů Skupina uživatelů
Posun Posun

Klíčové rozdíly mezi Apache Kafka a Event Hubs

Přestože Apache Kafka software, který obvykle potřebujete nainstalovat a provozovat, Event Hubs je plně spravovaná služba nativní pro cloud. Neexistují žádné servery, disky ani sítě, které by bylo možné spravovat a monitorovat, a žádní zprostředkovatelé, které byste nikdy měli zvážit nebo nakonfigurovat. Vytvoříte obor názvů, což je koncový bod s plně kvalifikovaným názvem domény, a pak v Event Hubs (témata).

Další informace o oborech Event Hubs a oborech názvů najdete v Event Hubs funkcích. Jako cloudová služba Event Hubs 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ž Event Hubs protokol implementuje stejný protokol, tento rozdíl znamená, že veškerý provoz Kafka pro všechny oddíly je předvídatelně směrován přes tento jeden koncový bod, a nevyžaduje přístup přes bránu firewall pro všechny zprostředkovatele clusteru.

Škálování na Event Hubs se řídí podle množství jednotek propustnosti (TU) nebo jednotek zpracování, které zakoupíte. Pokud povolíte funkci automatického nafouknutí pro obor názvů úrovně Standard, Event Hubs při dosažení limitu propustnosti automaticky škáluje počet TU. Tato funkce funguje také s podporou Apache Kafka protokolu. V případě oboru názvů úrovně Premier můžete zvýšit počet jednotek zpracování přiřazených k oboru názvů.

Je Apache Kafka řešení pro vaši úlohu?

Při vytváření aplikací pomocí Apache Kafka je také užitečné pochopit, že Azure Event Hubs je součástí vozového parku služeb, mezi které patří také Azure Service Busa Azure Event Grid.

I když někteří poskytovatelé komerčních distribucí služby Apache Kafka mohou navrhnout, že Apache Kafka je jednoúčelové řešení pro všechny potřeby vaší platformy zasílání zpráv, skutečnost je taková, že Apache Kafka neimplementuje například model fronty konkurujících si uživatelů, nemá podporu pro publikování a odběr na úrovni, která odběratelům umožňuje přístup k příchozím zprávám na základě jiných pravidel vyhodnocených serverem než prostých posunů. a nemá žádná zařízení ke sledování životního cyklu úlohy iniciované zprávou nebo odsouvání chybných zpráv do fronty zpráv, které jsou základem mnoha podnikových scénářů zasílání zpráv.

Informace o rozdílech mezi vzory a o tom, který model nejlépe pokryje která služba, najdete v tématu Možnosti asynchronního zasílání zpráv v pokynech k Azure. Jako uživatel Apache Kafka můžete zjistit, že komunikační cesty, které jste zatím s kafkou realizovali, je možné realizovat s mnohem méně základní složitostí a ještě výkonnějšími funkcemi pomocí Event Grid nebo Service Bus.

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

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

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

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

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

OAuth 2.0

Event Hubs se integruje s Azure Active Directory (Azure AD), která poskytuje centralizovaný autorizační server kompatibilní s OAuth 2.0. Se službou Azure AD můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit identitám klientů jemně odlaná oprávnění. Tuto funkci můžete použít se svými klienty Kafka tak, že SASL_SSL pro protokol a OAUTHBEARER pro tento mechanismus. Podrobnosti o úrovních a rolích Azure pro přístup k oborům najdete v tématu Autorizace přístupu pomocí Azure AD.

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

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

Event Hubs poskytuje také sdílené přístupové podpisy (SAS) pro delegovaný přístup k Event Hubs prostředkům Kafka. Autorizace přístupu pomocí mechanismu založeného na tokenu OAuth 2.0 poskytuje vynikající zabezpečení a snadné použití přes SAS. Předdefinované role také eliminují potřebu autorizace na základě seznamu ACL, kterou musí udržovat a spravovat uživatel. Tuto funkci můžete použít se svými 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ím řetězcem pro váš Event Hubs názvů. Pokyny k získání připojovacího řetězce najdete v tématu Získání Event Hubs připojovacího řetězce. 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 vygenerování klíče SAS neodpojují.

ukázky

Kurz s podrobnými pokyny k vytvoření centra událostí a přístupu k ní pomocí SAS nebo OAuth najdete v tématu Rychlý start: Streamování dat s využitím Event Hubs pomocí protokolu Kafka.

Další ukázky, které ukazují, jak používat OAuth s Event Hubs pro Kafka, najdete v ukázky na GitHub.

Další Event Hubs funkce

Funkce Event Hubs pro Apache Kafka je jedním ze tří protokolů, které jsou souběžně dostupné na Azure Event Hubs a doplňují http a AMQP. Můžete psát s libovolným z těchto protokolů a číst s ostatními, aby aktuální producenti Apache Kafka mohli pokračovat v publikování přes Apache Kafka, ale čtenář může těžit z nativní integrace s rozhraním AMQP Event Hubs, jako je Azure Stream Analytics nebo Azure Functions. Naopak můžete snadno integrovat Azure Event Hubs sítě směrování AMQP jako cílový koncový bod a přesto číst data prostřednictvím Apache Kafka integrace.

Kromě toho Event Hubs funkce jako Capture, které umožňují extrémně nákladově efektivní dlouhodobou archivaci prostřednictvím služeb Azure Blob Storage a Azure Data Lake Storage a Geografické zotavení po havárii, fungují také s funkcí Event Hubs for Kafka.

Apache Kafka funkcí

Cílem služby Event Hubs pro Apache Kafka je poskytnout přístup k funkcím centra událostí Azure aplikacím, které jsou uzamčené do rozhraní Apache Kafka API a jinak by je řešit Apache Kafka cluster.

Jak jsme vysvětlili výše,vozový park zasílání zpráv Azure poskytuje bohaté a robustní pokrytí pro celou část scénářů zasílání zpráv, a přestože prostřednictvím podpory rozhraní Apache Kafka API v Event Hubs se v současné době nepodporují následující funkce, ukazujeme, kde a jak je požadovaná funkce dostupná.

Transakce

Azure Service Bus robustní podporu transakcí, která umožňuje příjem a usazování zpráv a relací při odesílání odchozích zpráv vyplývajících ze zpracování zpráv do více cílových entit v rámci ochrany konzistence transakce. Sada funkcí umožňuje nejen přesně jedno zpracování jednotlivých zpráv v sekvenci, ale také zabraňuje riziku, že by jiný příjemce omylem znovu zpracuje stejné zprávy, jako by tomu bylo 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 zkomprimuje 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 speciální zprávu.

Tato funkce je v podstatě v rozporu s modelem více protokolů Azure Event Hubs, který umožňuje, aby zprávy, Azure Event Hubs zprávy odesílané v dávkách, byly jednotlivě načítny zprostředkovatele Azure Event Hubs prostřednictvím libovolného protokolu.

Datová část jakékoli události centra událostí je datový proud bajtů a obsah je možné komprimovat pomocí algoritmu podle vašeho výběru. Formát kódování Apache Avro nativně podporuje kompresi.

Komprimace protokolů

Apache Kafka komprimace protokolu je funkce, která umožňuje vyřazení všech klíčů s rozdílem od posledního záznamu z oddílu, což v podstatě změní téma Apache Kafka na úložiště párů klíč-hodnota, kde poslední přidaná hodnota přepíše to předchozí. Tato funkce v současné době není implementovaná Azure Event Hubs. Model úložiště klíč-hodnota, a to i při častých aktualizacích, je mnohem lépe podporovaný databázovými službami, jako je Azure Cosmos DB. Další informace najdete v tématu Projekce protokolu.

Kafka Toky

Kafka Toky je klientská knihovna pro stream analytics, která je součástí open source projektu Apache Kafka, ale je oddělená od zprostředkovatele streamu událostí Apache Kafka událostí.

Nejčastějším důvodem, Azure Event Hubs zákazníci žádat o podporu Toky Kafka, je, že se zajímají o produkt ksqlDB společnosti Confluent. "ksqlDB" je proprietární projekt se sdíleným zdrojovým kódem, který je licencovaný tak, aby žádný dodavatel "nabízející software jako službu, platformu jako službu, infrastrukturu jako službu nebo jiný podobný online služby, který konkuruje produktům nebo službám Confluent", mohl používat nebo nabízet podporu ksqlDB. Prakticky– pokud používáte ksqlDB, musíte buď provozovat Kafka sami, nebo musíte použít cloudové nabídky confluentu. Licenční podmínky můžou mít vliv také na zákazníky Azure, kteří nabízejí služby pro účely vyloučené z licence.

Kafka Toky má samostatné a bez ksqlDB méně možností než řada alternativních architektur a služeb, z nichž většina má integrovaná rozhraní streamování SQL a všechny se integrují s Azure Event Hubs dnes:

Uvedené služby a architektury získají datové proudy událostí a referenční data přímo z různorodé sady zdrojů prostřednictvím adaptérů. Kafka Toky získat data pouze z Apache Kafka a vaše analytické projekty jsou tedy uzamčené na Apache Kafka. Pokud chcete používat data z jiných zdrojů, musíte nejprve importovat data do Apache Kafka pomocí architektury Připojení Kafka.

Pokud musíte použít rozhraní Kafka Toky Azure, Apache Kafka ve službě HDInsight vám tuto možnost poskytne. Apache Kafka ve službě HDInsight poskytuje úplnou kontrolu nad všemi aspekty konfigurace služby Apache Kafka a přitom je plně integrován s různými aspekty platformy Azure, od umístění domény selhání nebo aktualizace po izolaci sítě až po integraci monitorování.

Další kroky

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