Použití Azure Event Hubs z Apache Kafkach aplikacíUse Azure Event Hubs from Apache Kafka applications

Event Hubs poskytuje koncový bod kompatibilní s rozhraními API Apache Kafka® výrobce a spotřebitele, která můžou používat většina stávajících klientských aplikací Apache Kafka jako alternativu ke spuštění vlastního Apache Kafka clusteru.Event Hubs provides an endpoint compatible with the Apache Kafka® producer and consumer APIs that can be used by most existing Apache Kafka client applications as an alternative to running your own Apache Kafka cluster. Event Hubs podporuje klienty rozhraní API Apache Kafka výrobce a příjemce ve verzi 1,0 a vyšší.Event Hubs supports Apache Kafka's producer and consumer APIs clients at version 1.0 and above.

Co Event Hubs for Kafka poskytnout?What does Event Hubs for Kafka provide?

Funkce Event Hubs for Apache Kafka poskytuje hlavní hlavičku protokolu pro Azure Event Hubs, která je kompatibilní s protokolem Apache Kafka klienty vytvořenými pro Apache Kafka Server verze 1,0 a novější a podporuje jak čtení z, tak i zápis na Event Hubs, což je ekvivalentem Apache Kafka témat.The Event Hubs for Apache Kafka feature provides a protocol head on top of Azure Event Hubs that is protocol compatible with Apache Kafka clients built for Apache Kafka server versions 1.0 and later and supports for both reading from and writing to Event Hubs, which are equivalent to Apache Kafka topics.

Ve svých aplikacích můžete často použít Event Hubs koncový bod Kafka, aniž byste museli měnit kód v porovnání s existujícím nastavením Kafka a upravovat jenom konfiguraci: aktualizujte připojovací řetězec v konfiguracích tak, aby odkazoval na koncový bod Kafka vystavený centrem událostí, a nemusíte ukazovat na svůj cluster Kafka.You can often use the Event Hubs Kafka endpoint from your applications without code changes compared to your existing Kafka setup and only modify the configuration: Update the connection string in configurations to point to the Kafka endpoint exposed by your event hub instead of pointing to your Kafka cluster. Pak můžete spustit streamování událostí z aplikací, které používají protokol Kafka, do Event Hubs.Then, you can start streaming events from your applications that use the Kafka protocol into Event Hubs.

Koncepční, Kafka a Event Hubs jsou velmi podobné: Jedná se o segmentované protokoly sestavené pro streamovaná data, kde klient řídí, která součást uchovávaného protokolu si chce přečíst.Conceptually, Kafka and Event Hubs are very similar: they're both partitioned logs built for streaming data, whereby the client controls which part of the retained log it wants to read. Následující tabulka mapuje koncepty mezi Kafka a Event Hubs.The following table maps concepts between Kafka and Event Hubs.

Kafka a konceptuální mapování centra událostíKafka and Event Hub conceptual mapping

Koncept KafkaKafka Concept Event Hubs konceptEvent Hubs Concept
ClusterCluster Obor názvůNamespace
TémaTopic Centrum událostíEvent Hub
OddílPartition OddílPartition
Skupina uživatelůConsumer Group Skupina uživatelůConsumer Group
PosunOffset PosunOffset

Klíčové rozdíly mezi Apache Kafka a Event HubsKey differences between Apache Kafka and Event Hubs

I když Apache Kafka je software, který obvykle potřebujete k instalaci a provozování, Event Hubs je plně spravovaná cloudová služba, která je nativní.While Apache Kafka is software you typically need to install and operate, Event Hubs is a fully managed, cloud-native service. Neexistují žádné servery, disky ani sítě, které by bylo možné spravovat a monitorovat, a žádné služby, které by bylo možné zvážit ani konfigurovat, kdykoli.There are no servers, disks, or networks to manage and monitor and no brokers to consider or configure, ever. Vytvoříte obor názvů, což je koncový bod s plně kvalifikovaným názvem domény, a potom v rámci tohoto oboru názvů vytvoříte Event Hubs (témata).You create a namespace, which is an endpoint with a fully qualified domain name, and then you create Event Hubs (topics) within that namespace.

Další informace o Event Hubs a oborech názvů najdete v tématu Event Hubs funkce.For more information about Event Hubs and namespaces, see Event Hubs features. Jako cloudová služba Event Hubs používá jedinou stabilní virtuální IP adresu jako koncový bod, takže klienti nepotřebují znát o vzdálení nebo počítačích v clusteru.As a cloud service, Event Hubs uses a single stable virtual IP address as the endpoint, so clients don't need to know about the brokers or machines within a cluster. I když Event Hubs implementuje stejný protokol, tento rozdíl znamená, že všechny přenosy Kafka pro všechny oddíly jsou prediktivním způsobem směrovány prostřednictvím tohoto jednoho koncového bodu, ale nevyžadují přístup k bráně firewall pro všechny zprostředkovatele clusteru.Even though Event Hubs implements the same protocol, this difference means that all Kafka traffic for all partitions is predictably routed through this one endpoint rather than requiring firewall access for all brokers of a cluster.

Škála v Event Hubs je řízena počtem jednotek propustnosti, které zakoupíte, s každou jednotkou propustnosti entitling 1 megabajt za sekundu nebo 1000 událostí za sekundu příchozího přenosu dat a dvakrát tento svazek.Scale in Event Hubs is controlled by how many throughput units you purchase, with each throughput unit entitling you to 1 Megabyte per second, or 1000 events per second of ingress and twice that volume in egress. Event Hubs může automaticky škálovat jednotky propustnosti při dosažení limitu propustnosti, pokud používáte funkci automatického rozplochení ; Tato funkce funguje taky s podporou protokolu Apache Kafka.Event Hubs can automatically scale up throughput units when you reach the throughput limit if you use the Auto-Inflate feature; this feature work also works with the Apache Kafka protocol support.

Je Apache Kafka správné řešení pro vaše zatížení?Is Apache Kafka the right solution for your workload?

Připravujeme z vytváření aplikací pomocí Apache Kafka, bude také užitečné pochopit, že Azure Event Hubs je součástí loďstva služeb, která zahrnuje i Azure Service Busa Azure Event Grid.Coming from building applications using Apache Kafka, it will also useful to understand that Azure Event Hubs is part of a fleet of services which also includes Azure Service Bus, and Azure Event Grid.

I když někteří poskytovatelé komerčních distribucí Apache Kafka můžou navrhnout, že Apache Kafka je jednou zarážkami pro potřeby vaší platformy pro zasílání zpráv, je tato skutečnost taková, že Apache Kafka neimplementuje, například vzor fronty konkurenčního příjemce nemá podporu pro publikování a odběr na úrovni, která umožňuje předplatitelům přístup k příchozím zprávám na základě jiných pravidel vyhodnocených serverem než jednoduchých posunů a nemá žádná zařízení ke sledování životního cyklu úlohy iniciované zprávou nebo sidelining vadných zpráv do fronty nedoručených zpráv, což je základem pro mnoho podnikových scénářů zasílání zpráv.While some providers of commercial distributions of Apache Kafka might suggest that Apache Kafka is a one-stop-shop for all your messaging platform needs, the reality is that Apache Kafka does not implement, for instance, the competing-consumer queue pattern, does not have support for publish-subscribe at a level that allows subscribers access to the incoming messages based on server-evaluated rules other than plain offsets, and it has no facilities to track the lifecycle of a job initiated by a message or sidelining faulty messages into a dead-letter queue, all of which are foundational for many enterprise messaging scenarios.

Pro pochopení rozdílů mezi vzorci a podle toho, která služba nejlépe pokrývá tuto službu, přečtěte si téma Možnosti asynchronního zasílání zpráv v dokumentaci Azure .To understand the differences between patterns and which pattern is best covered by which service, please review the Asynchronous messaging options in Azure guidance. Jako uživatel Apache Kafka se můžete setkat s tím, že komunikační cesty, které jste doposud provedli s Kafka, můžou být realizované s mnohem méně základní složitou složitostí a ještě výkonnějšími funkcemi pomocí Event Grid nebo Service Bus.As an Apache Kafka user, you may find that communication paths you have so far realized with Kafka, can be realized with far less basic complexity and yet more powerful capabilities using either Event Grid or Service Bus.

Pokud potřebujete konkrétní funkce Apache Kafka, které nejsou k dispozici prostřednictvím Event Hubs pro Apache Kafka rozhraní, nebo pokud váš vzor implementace překročí Event Hubs kvóty, můžete také spustit nativní Apache Kafka cluster ve službě Azure HDInsight.If you need specific features of Apache Kafka that are not available through the Event Hubs for Apache Kafka interface or if your implementation pattern exceeds the Event Hubs quotas, you can also run a native Apache Kafka cluster in Azure HDInsight.

Zabezpečení a ověřováníSecurity and authentication

Při každém publikování nebo zpracování událostí z Event Hubs pro Kafka se klient pokouší získat přístup k prostředkům Event Hubs.Every time you publish or consume events from an Event Hubs for Kafka, your client is trying to access the Event Hubs resources. Chcete zajistit, aby k prostředkům byl přistup pomocí autorizované entity.You want to ensure that the resources are accessed using an authorized entity. Při použití Apache Kafka protokolu u klientů můžete nastavit konfiguraci pro ověřování a šifrování pomocí mechanismů SASL.When using Apache Kafka protocol with your clients, you can set your configuration for authentication and encryption using the SASL mechanisms. Při použití Event Hubs pro Kafka se vyžaduje šifrování TLS (protože všechna data v přenosu s Event Hubs jsou šifrovaná TLS).When using Event Hubs for Kafka requires the TLS-encryption (as all data in transit with Event Hubs is TLS encrypted). Můžete to udělat zadáním možnosti SASL_SSL v konfiguračním souboru.It can be done specifying the SASL_SSL option in your configuration file.

Azure Event Hubs poskytuje několik možností, jak autorizovat přístup k vašim zabezpečeným prostředkům.Azure Event Hubs provides multiple options to authorize access to your secure resources.

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

OAuth 2.0OAuth 2.0

Event Hubs se integruje s Azure Active Directory (Azure AD), která poskytuje centralizovaný autorizační server kompatibilní s OAuth 2,0 .Event Hubs integrates with Azure Active Directory (Azure AD), which provides an OAuth 2.0 compliant centralized authorization server. Pomocí Azure AD můžete pomocí řízení přístupu založeného na rolích Azure (Azure RBAC) udělit k identitě klientů jemně odstupňovaná oprávnění.With Azure AD, you can use Azure role-based access control (Azure RBAC) to grant fine grained permissions to your client identities. Tuto funkci můžete použít u klientů Kafka zadáním SASL_SSL pro protokol a OAUTHBEARER pro mechanismus.You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and OAUTHBEARER for the mechanism. Podrobnosti o rolích a úrovních Azure pro přístup k oboru najdete v tématu autorizace přístupu pomocí Azure AD.For details about Azure roles and levels for scoping access, see Authorize access with 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)Shared Access Signature (SAS)

Event Hubs taky poskytuje sdílené přístupové podpisy (SAS) pro delegovaný přístup k Event Hubs prostředkům Kafka.Event Hubs also provides the Shared Access Signatures (SAS) for delegated access to Event Hubs for Kafka resources. Autorizaci přístupu pomocí mechanismu OAuth 2,0 s tokenem založeným na tokenech zabezpečení poskytuje prvotřídní zabezpečení a snadné použití prostřednictvím SAS.Authorizing access using OAuth 2.0 token-based mechanism provides superior security and ease of use over SAS. Předdefinované role mohou také eliminovat nutnost ověřování na základě seznamu ACL, které musí uživatel spravovat a spravovat.The built-in roles can also eliminate the need for ACL-based authorization, which has to be maintained and managed by the user. Tuto funkci můžete použít spolu s klienty Kafka zadáním SASL_SSL pro protokol a pro mechanismus jako prostý .You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and PLAIN for the mechanism.

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 obor názvů.Replace {YOUR.EVENTHUBS.CONNECTION.STRING} with the connection string for your Event Hubs namespace. Pokyny k získání připojovacího řetězce najdete v tématu získání připojovacího řetězce Event Hubs.For instructions on getting the connection string, see Get an Event Hubs connection string. 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";Here's an example configuration: 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í pomocí SAS u klientů Kafka nejsou vytvořená připojení po opětovném vygenerování klíče SAS odpojena.When using SAS authentication with Kafka clients, established connections aren't disconnected when the SAS key is regenerated.

ukázkySamples

Kurz s podrobnými pokyny k vytvoření centra událostí a přístup k němu pomocí SAS nebo OAuth najdete v tématu rychlý Start: streamování dat pomocí Event Hubs pomocí protokolu Kafka.For a tutorial with step-by-step instructions to create an event hub and access it using SAS or OAuth, see Quickstart: Data streaming with Event Hubs using the Kafka protocol.

Další ukázky , které ukazují, jak používat OAuth s Event Hubs pro Kafka, najdete v tématu ukázky na GitHubu.For more samples that show how to use OAuth with Event Hubs for Kafka, see samples on GitHub.

Další funkce Event HubsOther Event Hubs features

Funkce Event Hubs for Apache Kafka je jedním ze tří protokolů, které jsou souběžně dostupné v Azure Event Hubs, doplňují požadavky HTTP a AMQP.The Event Hubs for Apache Kafka feature is one of three protocols concurrently available on Azure Event Hubs, complementing HTTP and AMQP. Můžete psát pomocí kteréhokoli z těchto protokolů a číst je s jiným způsobem, aby vaše aktuální Apache Kafka výrobci mohli pokračovat v publikování prostřednictvím Apache Kafka, ale čtenář může těžit z nativní integrace s rozhraním Event Hubs "AMQP", například Azure Stream Analytics nebo Azure Functions.You can write with any of these protocols and read with any another, so that your current Apache Kafka producers can continue publishing via Apache Kafka, but your reader can benefit from the the native integration with Event Hubs' AMQP interface, such as Azure Stream Analytics or Azure Functions. V opačném případě můžete Azure Event Hubs snadno integrovat do sítí směrování AMQP jako cílový koncový bod a teprve potom číst data prostřednictvím Apache Kafka integrací.Reversely, you can readily integrate Azure Event Hubs into AMQP routing networks as an target endpoint, and yet read data through Apache Kafka integrations.

Kromě toho Event Hubs funkce, jako je například Capture, což umožňuje extrémně dlouhodobě dlouhodobou archivaci pomocí Azure Blob Storage a Azure Data Lake Storage a geografická havárie – obnovení funguje i s Event Hubs pro funkci Kafka.Additionally, Event Hubs features such as Capture, which enables extremely cost efficient long term archival via Azure Blob Storage and Azure Data Lake Storage, and Geo Disaster-Recovery also work with the Event Hubs for Kafka feature.

Rozdíly v Apache Kafka funkcíApache Kafka feature differences

Cílem Event Hubs pro Apache Kafka je poskytnout přístup k funkcím centra událostí Azure aplikacím, které jsou uzamčené do rozhraní API služby Apache Kafka a jinak by se muselo zálohovat pomocí clusteru Apache Kafka.The goal of Event Hubs for Apache Kafka is to provide access to Azure Event Hub's capabilities to applications that are locked into the Apache Kafka API and would otherwise have to be backed by an Apache Kafka cluster.

Jak je vysvětleno výše, poskytuje Azure zasílání zpráv Azure bohatě a robustní pokrytí mnoha scénářů zasílání zpráv a i když Event Hubs podporuje Apache Kafka rozhraní API následující funkce, ukazujíme, kde a jak je požadovaná funkce dostupná.As explained above, the Azure Messaging fleet provides rich and robust coverage for a multitude of messaging scenarios, and although the following features are not currently supported through Event Hubs' support for the Apache Kafka API, we point out where and how the desired capability is available.

TransakceTransactions

Azure Service Bus má robustní podporu transakcí, která umožňuje příjem a vyrovnávání zpráv a relací při posílání odchozích zpráv, které vyplývají ze zpracování zpráv do více cílových entit v rámci ochrany konzistence transakce.Azure Service Bus has robust transaction support that allows receiving and settling messages and sessions while sending outbound messages resulting from message processing to multiple target entities under the consistency protection of a transaction. Sada funkcí umožňuje nejen přesně jednou zpracovat každou zprávu v sekvenci, ale zároveň se jim vyhne riziko, že by nechtěně znovu zpracovala stejné zprávy, jako by to byl případ s Apache Kafka.The feature set not only allows for exactly-once processing of each message in a sequence, but also avoids the risk of another consumer inadvertently reprocessing the same messages as it would be the case with Apache Kafka. Service Bus je doporučená služba pro úlohy transakčních zpráv.Service Bus is the recommended service for transactional message workloads.

KompreseCompression

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ě spotřebitele.The client-side compression feature of Apache Kafka compresses a batch of multiple messages into a single message on the producer side and decompresses the batch on the consumer side. Zprostředkovatel Apache Kafka považuje dávku za speciální zprávu.The Apache Kafka broker treats the batch as a special message.

Tato funkce je v podstatě na lichá s modelem víceprotokolového protokolu Azure Event Hubs, který umožňuje, aby se zprávy, i ty, které se odesílají v dávkách, jednotlivě nacházely z zprostředkovatele a prostřednictvím libovolného protokolu.This feature is fundamentally at odds with Azure Event Hubs' multi-protocol model, which allows for messages, even those sent in batches, to be individually retrievable from the broker and through any protocol.

Datová část události centra událostí je datový proud bajtů a obsah lze zkomprimovat pomocí algoritmu, který zvolíte.The payload of any Event Hub event is a byte stream and the content can be compressed with an algorithm of your choosing. Formát kódování Apache Avro podporuje nativní komprimaci.The Apache Avro encoding format supports compression natively.

Komprimace protokolůLog Compaction

Apache Kafka komprimace protokolu je funkce, která umožňuje vyřadit všechny kromě posledního záznamu každého klíče z oddílu, což efektivně přepíná Apache Kafka téma do úložiště hodnot klíčů, kde Poslední přidaná hodnota Přepisuje předchozí.Apache Kafka log compaction is a feature that allows evicting all but the last record of each key from a partition, which effectively turns an Apache Kafka topic into a key-value store where the last value added overrides the previous one. Tato funkce je v Azure Event Hubs v současnosti neimplementuje.This feature is presently not implemented by Azure Event Hubs. Databázové služby, jako je například Azure Cosmos DB, jsou mnohem lepší, i když jsou vzor úložiště klíč-hodnota i s častými aktualizacemi.The key-value store pattern, even with frequent updates, is far better supported by database services like Azure Cosmos DB. Další podrobnosti najdete v tématu věnovaném prognózám protokolu v části Event Hubs federace.Please refer to the Log Projection topic in the Event Hubs federation guidance for more details.

Datové proudy KafkaKafka Streams

Kafka Streams je Klientská knihovna pro Stream Analytics, která je součástí Apache Kafka open source projektu, ale je oddělená od Apache Kafka zprostředkovatele datových proudů událostí.Kafka Streams is a client library for stream analytics that is part of the Apache Kafka open source project, but is separate from the Apache Kafka event stream broker.

Nejčastějším důvodem, proč zákazníci s Azure Event Hubs žádají o podporu datových proudů Kafka, je, že mají zájem o ksqlDB produkt.The most common reason Azure Event Hubs customers ask for Kafka Streams support is because they are interested in Confluent's "ksqlDB" product. "ksqlDB" je proprietární sdílený zdrojový projekt, který má licenci k tomu, že žádný dodavatel, který nabízí software jako služba, infrastruktura jako služba, infrastruktura jako služba nebo jiná podobná online služby, která soutěží s konkurenčními produkty nebo službami, může používat nebo nabízet podporu "ksqlDB"."ksqlDB" is a proprietary shared source project that is licensed such that no vendor "offering software-as-a-service, platform-as-a-service, infrastructure-as-a-service or other similar online services that competes with Confluent products or services" is permitted to use or offer "ksqlDB" support. Prakticky, pokud používáte ksqlDB, musíte buď Kafka sami, nebo musíte použít cloudové nabídky.Practically, if you use ksqlDB, you must either operate Kafka yourself or you must use Confluent’s cloud offerings. Licenční podmínky můžou mít vliv i na zákazníky Azure, kteří nabízejí služby pro účely vyloučené licencí.The licensing terms might also affect Azure customers who offer services for a purpose excluded by the license.

Kafka datové proudy a bez ksqlDB mají méně možností než mnoho alternativních rozhraní a služeb. většina z nich má Vestavěná rozhraní pro streamování SQL a všechny, které se integrují s Azure Event Hubs ještě dnes:Standalone and without ksqlDB, Kafka Streams has fewer capabilities than many alternative frameworks and services, most of which have built-in streaming SQL interfaces, and all of which integrate with Azure Event Hubs today:

Uvedené služby a architektury můžou obecně získávat datové proudy událostí a referenční data přímo z různých sad zdrojů prostřednictvím adaptérů.The listed services and frameworks can generally acquire event streams and reference data directly from a diverse set of sources through adapters. Kafka streamy můžou získat data jenom z Apache Kafka a vaše analytické projekty jsou proto uzamčené do Apache Kafka.Kafka Streams can only acquire data from Apache Kafka and your analytics projects are therefore locked into Apache Kafka. Chcete-li použít data z jiných zdrojů, je nutné nejprve importovat data do Apache Kafka pomocí architektury Kafka Connect.To use data from other sources, you are required to first import data into Apache Kafka with the Kafka Connect framework.

Pokud musíte použít rozhraní Kafka Streams v Azure, Apache Kafka v HDInsight vám nabídne tuto možnost.If you must use the Kafka Streams framework on Azure, Apache Kafka on HDInsight will provide you with that option. Apache Kafka v HDInsight poskytuje plnou kontrolu nad všemi aspekty konfigurace Apache Kafka a přitom se plně integruje s různými aspekty platformy Azure, od umístění v doméně selhání/aktualizace k izolaci sítě až po monitorování integrace.Apache Kafka on HDInsight provides full control over all configuration aspects of Apache Kafka, while being fully integrated with various aspects of the Azure platform, from fault/update domain placement to network isolation to monitoring integration.

Další krokyNext steps

Tento článek poskytuje Úvod do Event Hubs pro Kafka.This article provided an introduction to Event Hubs for Kafka. Další informace najdete v tématu Apache Kafka příručka pro vývojáře pro Azure Event Hubs.To learn more, see Apache Kafka developer guide for Azure Event Hubs.