Mi az Az Azure Event Hubs for Apache Kafka?

Ez a cikk azt ismerteti, hogyan streamelhet adatokat az Azure Event Hubs használatával az Apache Kafka-alkalmazásokból anélkül, hogy önállóan állítson be Kafka-fürtöt.

Feljegyzés

Ez a funkció csak a standard, prémium és dedikált szinteken támogatott.

Áttekintés

Az Azure Event Hubs egy Apache Kafka-végpontot biztosít egy eseményközponton, amely lehetővé teszi a felhasználók számára, hogy a Kafka protokoll használatával csatlakozzanak az eseményközponthoz. Az eseményközpont Kafka-végpontját gyakran kódmódosítások nélkül is használhatja az alkalmazásokból. Csak a konfigurációt módosítja, azaz a konfigurációkban lévő kapcsolati sztring úgy frissíti, hogy az eseményközpont által közzétett Kafka-végpontra mutasson ahelyett, hogy egy Kafka-fürtre mutat. Ezután elindíthatja a Kafka protokollt használó alkalmazásokból a Kafka-témaköröknek megfelelő eseményközpontokba való streamelést.

Feljegyzés

Az Event Hubs for Kafka Ecosystems támogatja az Apache Kafka 1.0-s és újabb verzióját.

Az Apache Kafka és az Azure Event Hubs fogalmi leképezése

Elméletileg a Kafka és az Event Hubs nagyon hasonló. Mindkettő particionált naplók, amelyek streamelési adatokhoz vannak létrehozva, így az ügyfél szabályozza, hogy a megőrzött napló mely részét szeretné olvasni. Az alábbi táblázat a Kafka és az Event Hubs közötti fogalmakat ismerteti.

Kafka-koncepció Event Hubs-koncepció
Fürt Névtér
Téma Eseményközpont
Partíció Partíció
Felhasználói csoport Felhasználói csoport
Eltolás Eltolás

Az Apache Kafka és az Azure Event Hubs közötti főbb különbségek

Bár az Apache Kafka általában telepíteni és üzemeltetni kívánt szoftver, az Event Hubs egy teljes mértékben felügyelt, natív felhőszolgáltatás. Nincsenek kiszolgálók, lemezek vagy hálózatok, amelyeket kezelhet és figyelhet, és nincsenek olyan közvetítők, amelyeket érdemes megfontolni vagy konfigurálni. Létre kell hoznia egy névteret, amely egy teljes tartománynévvel rendelkező végpont, majd létrehozza az Event Hubsot (témaköröket) ezen a névtéren belül.

Az Event Hubsról és a névterekről további információt az Event Hubs funkcióiban talál. Felhőszolgáltatásként az Event Hubs egyetlen stabil virtuális IP-címet használ végpontként, így az ügyfeleknek nem kell tudniuk a fürtön belüli közvetítőkről vagy gépekről. Bár az Event Hubs ugyanazt a protokollt valósítja meg, ez a különbség azt jelenti, hogy az összes partíció összes Kafka-forgalma kiszámíthatóan ezen az egy végponton halad át, nem pedig tűzfal-hozzáférést igényel egy fürt összes közvetítője számára.

Az Event Hubs skálázását a megvásárolt átviteli egységek (TU-k) vagy feldolgozási egységek vezérlik. Ha engedélyezi az automatikus feltöltés funkciót egy standard szintű névtérhez, az Event Hubs automatikusan felskálázza a TUS-kat, amikor eléri az átviteli sebesség korlátját. Ez a funkció az Apache Kafka protokoll támogatásával is működik. Prémium szintű névtér esetén növelheti a névtérhez rendelt feldolgozási egységek számát.

Az Apache Kafka a megfelelő megoldás a számítási feladathoz?

Az Apache Kafka használatával készült alkalmazásokból származó adatok azt is hasznosnak bizonyulják, hogy az Azure Event Hubs egy olyan szolgáltatásflotta része, amely az Azure Service Bust és az Azure Event Gridet is magában foglalja.

Bár az Apache Kafka kereskedelmi disztribúcióinak egyes szolgáltatói arra utalhatnak, hogy az Apache Kafka egyablakos megoldás az összes üzenetkezelési platform igényeinek kielégítésére, a valóság az, hogy az Apache Kafka nem implementálja például a versengő-fogyasztó üzenetsormintát, és nem támogatja a közzétételre való feliratkozást olyan szinten, amely lehetővé teszi az előfizetők számára a bejövő üzenetekhez való hozzáférést a kiszolgáló által kiértékelt szabályokon alapuló, az egyszerű eltolásokon kívül, és nem rendelkezik olyan lehetőségekkel, amelyekkel nyomon követheti egy üzenet által kezdeményezett feladatok életciklusát, vagy a hibás üzeneteket holtbetűs üzenetsorba rendezheti, amelyek mindegyike számos vállalati üzenetkezelési forgatókönyv alapja.

A minták közötti különbségek és a szolgáltatás által legjobban lefedett minta megértéséhez tekintse meg az Aszinkron üzenetkezelési lehetőségeket az Azure útmutatójában . Apache Kafka-felhasználóként azt tapasztalhatja, hogy a Kafkával eddig megvalósított kommunikációs útvonalak sokkal kevésbé alapszintű összetettséggel és még hatékonyabb képességekkel valósíthatók meg az Event Grid vagy a Service Bus használatával.

Ha olyan Apache Kafka-funkciókra van szüksége, amelyek nem érhetők el az Apache Kafka-hoz készült Event Hubs felületén keresztül, vagy ha a megvalósítási minta meghaladja az Event Hubs kvótáit, natív Apache Kafka-fürtöt is futtathat az Azure HDInsightban.

Biztonság és hitelesítés

Minden alkalommal, amikor eseményeket tesz közzé vagy használ egy Event Hubs for Kafkából, az ügyfél megpróbál hozzáférni az Event Hubs-erőforrásokhoz. Győződjön meg arról, hogy az erőforrások egy engedélyezett entitás használatával érhetők el. Ha Apache Kafka protokollt használ az ügyfelekkel, beállíthatja a hitelesítés és a titkosítás konfigurációját az SASL-mechanizmusok használatával. Ha az Event Hubs for Kafkához szükséges a TLS-titkosítás (mivel az Event Hubs szolgáltatással átvitt összes adat TLS-titkosítással van el van adva), a konfigurációs fájlban megadhatja a SASL_SSL beállítást.

Az Azure Event Hubs több lehetőséget is kínál a biztonságos erőforrásokhoz való hozzáférés engedélyezésére.

  • OAuth 2.0
  • Közös hozzáférésű jogosultságkód (SAS)

OAuth 2.0

Az Event Hubs integrálható a Microsoft Entra ID-val, amely egy OAuth 2.0-kompatibilis központosított engedélyezési kiszolgálót biztosít. A Microsoft Entra ID használatával az Azure szerepköralapú hozzáférés-vezérléssel (Azure RBAC) részletes engedélyeket adhat az ügyfélidentitásokhoz. Ezt a funkciót a Kafka-ügyfelekkel használhatja a protokoll SASL_SSL és a mechanizmus OAUTHBEARER-jének megadásával. A hatókör-hozzáférés Azure-szerepköreivel és szintjeivel kapcsolatos részletekért lásd: Hozzáférés engedélyezése a Microsoft Entra-azonosítóval.

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

Feljegyzés

A fenti konfigurációs tulajdonságok a Java programozási nyelvhez tartoznak. Az OAuth és az Event Hubs for Kafka különböző programozási nyelvek használatával történő használatát bemutató mintákért tekintse meg a GitHubon található mintákat.

Közös hozzáférésű jogosultságkód (SAS)

Az Event Hubs a Kafka-erőforrásokhoz tartozó Event Hubshoz való delegált hozzáféréshez is biztosítja a közös hozzáférésű jogosultságkódokat (SAS ). Az OAuth 2.0 jogkivonatalapú mechanizmussal történő hozzáférés engedélyezése kiváló biztonságot és egyszerű használatot biztosít az SAS-en keresztül. A beépített szerepkörök szükségtelenné tehetik az ACL-alapú engedélyezést is, amelyet a felhasználónak kell fenntartania és felügyelnie. Ezt a funkciót a Kafka-ügyfelekkel használhatja a protokollhoz tartozó SASL_SSL megadásával, a mechanizmushoz pedig a PLAIN értéket.

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

Fontos

Cserélje le {YOUR.EVENTHUBS.CONNECTION.STRING} az Event Hubs-névtér kapcsolati sztring. A kapcsolati sztring beszerzésére vonatkozó útmutatásért lásd: Event Hubs-kapcsolati sztring beszerzése. Íme egy példakonfiguráció: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Feljegyzés

Ha SAS-hitelesítést használ a Kafka-ügyfelekkel, a létrehozott kapcsolatok nem lesznek leválasztva az SAS-kulcs újragenerálásakor.

Feljegyzés

A létrehozott közös hozzáférésű jogosultságkód-jogkivonatok nem támogatottak az Event Hubs for Apache Kafka-végpont használatakor.

Példák

Az eseményközpontok sassal vagy OAuth használatával való elérésével kapcsolatos részletes útmutatást tartalmazó oktatóanyagért tekintse meg a Kafka protokollt használó data streaming with Event Hubs (Adatstreamelés az Event Hubs használatával) című rövid útmutatót.

Az Azure Event Hubs egyéb funkciói

Az Apache Kafka Event Hubs funkciója az Azure Event Hubsban egyidejűleg elérhető három protokoll egyike, amely kiegészíti a HTTP-t és az AMQP-t. Ezen protokollok bármelyikével írhat, és bármelyik másikkal olvashat, így a jelenlegi Apache Kafka-gyártók továbbra is közzétehetik a közzétételt az Apache Kafkán keresztül, de az olvasó kihasználhatja az Event Hubs AMQP-felületének natív integrációját, például az Azure Stream Analyticset vagy az Azure Functionst. Ezzel szemben az Azure Event Hubs könnyen integrálható az AMQP útválasztási hálózataiba célvégpontként, és mégis adatokat olvashat az Apache Kafka-integrációkon keresztül.

Emellett az Event Hubs olyan funkciói, mint a Capture, amely rendkívül költséghatékony hosszú távú archiválást tesz lehetővé az Azure Blob Storage-on és az Azure Data Lake Storage-on keresztül, valamint a Geo Disaster-Recovery az Event Hubs for Kafka szolgáltatással is működik.

Idempotencia

Az Apache Kafkához készült Azure Event Hubs az idempotens gyártókat és az idempotens felhasználókat egyaránt támogatja.

Az Azure Event Hubs egyik alapvető alapelve a legalább egyszeri kézbesítés fogalma. Ez a megközelítés biztosítja, hogy az események mindig kézbesítve legyenek. Azt is jelenti, hogy az eseményeket többször is, akár ismétlődően is fogadhatják a fogyasztók, például egy függvény. Ezért fontos, hogy a fogyasztó támogatja az idempotens fogyasztói mintát.

Funkcióbeli különbségek az Apache Kafkával

Az Apache Kafkához készült Event Hubs célja, hogy hozzáférést biztosítson az Azure Event Hubs-képességekhez az Apache Kafka API-ba zárolt alkalmazásokhoz, amelyeket egyébként egy Apache Kafka-fürtnek kell biztosítania.

A fentiekben ismertetett módon az Azure Messaging-flotta számos üzenetkezelési forgatókönyvhöz biztosít gazdag és robusztus lefedettséget, és bár a következő funkciók jelenleg nem támogatottak az Event Hubs Apache Kafka API-jának támogatásával, rámutatunk, hogy hol és hogyan érhető el a kívánt képesség.

Tranzakciók

Az Azure Service Bus robusztus tranzakciótámogatással rendelkezik, amely lehetővé teszi az üzenetek és munkamenetek fogadását és rendezését, miközben az üzenetek feldolgozásából eredő kimenő üzeneteket több célentitással is elküldheti a tranzakció konzisztenciájának védelme alatt. A funkciókészlet nem csak az egyes üzenetek sorozatban történő feldolgozását teszi lehetővé, hanem azt is elkerüli, hogy egy másik felhasználó véletlenül újra feldolgozze ugyanazokat az üzeneteket, mint az Apache Kafka esetében. A Service Bus a tranzakciós üzenetek számítási feladatainak ajánlott szolgáltatása.

Tömörítés

Az Apache Kafka ügyféloldali tömörítési funkciója több üzenetből álló köteget tömörít egyetlen üzenetbe a gyártó oldalán, és a köteget a fogyasztói oldalon tömöríti. Az Apache Kafka-közvetítő speciális üzenetként kezeli a köteget.

A Kafka gyártóalkalmazás-fejlesztők a compression.type tulajdonság beállításával engedélyezhetik az üzenettömörítést. A nyilvános előzetes verzióban az egyetlen támogatott tömörítési algoritmus a gzip.

Compression.type = none | gzip

A funkció jelenleg csak az Apache Kafka forgalomkészítő és a fogyasztói forgalom esetében támogatott. Az AMQP-fogyasztó tömörített Kafka-forgalmat használhat tömörített üzenetekként. Minden Event Hubs-esemény hasznos adata egy bájtfolyam, és a tartalom egy ön által választott algoritmussal tömöríthető, bár nyilvános előzetes verzióban az egyetlen lehetőség a gzip. A Kafka-tömörítés használatának előnyei a kisebb üzenetméret, az továbbítható nagyobb hasznos adatmennyiség és az üzenetközvetítő erőforrás-felhasználásának csökkentése.

Kafka adatfolyamok

A Kafka adatfolyamok egy streamelemzési ügyfélkódtár, amely az Apache Kafka nyílt forráskódú projekt része, de elkülönül az Apache Kafka eseményközvetítőtől.

Az Azure Event Hubs ügyfelei a Kafka adatfolyamok támogatásának leggyakoribb oka az, hogy a Confluent "ksqlDB" terméke érdekli őket. A "ksqlDB" egy olyan védett, megosztott forrásprojekt, amely licenceléssel rendelkezik, így egyetlen gyártó sem használhat vagy kínálhat "ksqlDB-támogatást" a "szolgáltatásként nyújtott szoftver, szolgáltatásként nyújtott platform, infrastruktúra vagy más hasonló online szolgáltatások, amelyek versenyeznek a Confluent termékeivel vagy szolgáltatásaival". Gyakorlatilag, ha ksqlDB-t használ, akkor vagy saját maga kell üzemeltetnie a Kafkát, vagy a Confluent felhőajánlatait kell használnia. A licencfeltételek azOkat az Azure-ügyfeleket is érinthetik, akik a licenc által kizárt célra kínálnak szolgáltatásokat.

A KsqlDB nélkül a Kafka adatfolyamok kevesebb képessége van, mint számos alternatív keretrendszernek és szolgáltatásnak, amelyek többsége beépített streamelési SQL-felületekkel rendelkezik, és amelyek mindegyike integrálva van az Azure Event Hubs szolgáltatással:

A felsorolt szolgáltatások és keretrendszerek általában közvetlenül különböző forrásokból, adaptereken keresztül szerezhetnek be eseménystreameket és referenciaadatokat. A Kafka adatfolyamok csak az Apache Kafkától szerezhet be adatokat, ezért az elemzési projektek zárolva vannak az Apache Kafkába. Más forrásokból származó adatok használatához először adatokat kell importálnia az Apache Kafkába a Kafka Csatlakozás keretrendszerrel.

Ha a Kafka adatfolyamok-keretrendszert kell használnia az Azure-ban, az Apache Kafka on HDInsight ezt a lehetőséget biztosítja. A HDInsighton futó Apache Kafka teljes körű ellenőrzést biztosít az Apache Kafka összes konfigurációs aspektusa felett, miközben teljes mértékben integrálva van az Azure-platform különböző aspektusaival, a hiba/frissítés tartományelhelyezésétől a hálózatelkülönítésen át a monitorozási integrációig.

Következő lépések

Ez a cikk bemutatja a Kafkához készült Event Hubsot. További információ: Apache Kafka fejlesztői útmutató az Azure Event Hubshoz.

Az eseményközpontok sassal vagy OAuth használatával való elérésével kapcsolatos részletes útmutatást tartalmazó oktatóanyagért tekintse meg a Kafka protokollt használó data streaming with Event Hubs (Adatstreamelés az Event Hubs használatával) című rövid útmutatót.

Tekintse meg az OAuth-mintákat a GitHubon.