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.
A Kafka-alkalmazások Azure Event Hubsba való migrálásával kapcsolatos további információkért tekintse meg a migrálási útmutatót.
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 |
Eltérés | Eltérés |
Az Azure Event Hubsban támogatott Apache Kafka-funkciók
Kafka-streamek
Feljegyzés
A Kafka Streams jelenleg nyilvános előzetes verzióban érhető el Prémium és Dedikált szinten.
A Kafka Streams egy olyan ügyfélkódtár a streamelemzéshez, 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 támogatja a Kafka Streams ügyféloldali kódtárát, amelynek részletei és fogalmai itt érhetők el.
Az Azure Event Hubs ügyfelei a Kafka Streams támogatását kérik leggyakrabban azért, mert érdekli őket a Confluent "ksqlDB" terméke. 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 Streams kevesebb képességgel rendelkezik, mint számos alternatív keretrendszer és szolgáltatás, 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:
- Azure Stream Analytics
- Azure Synapse Analytics (az Event Hubs Capture használatával)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink a HDInsighton az AKS-en
- Akka Streams
Kafka-tranzakciók
Feljegyzés
A Kafka Transactions jelenleg nyilvános előzetes verzióban érhető el Prémium és Dedikált szinten.
Az Azure Event Hubs támogatja a Kafka-tranzakciókat. A támogatással és a fogalmakkal kapcsolatos további részletek itt érhetők el
Tömörítés
Feljegyzés
Az Event Hubs Kafka-tömörítése jelenleg csak prémium és dedikált szinteken támogatott.
Az Apache Kafka-ügyfelek ügyféloldali tömörítési funkciója fenntartja a számítási erőforrásokat és a sávszélességet azáltal, hogy egy több üzenetből álló köteget egyetlen üzenetbe tömörít 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. Az Azure Event Hubs jelenleg támogatja a gzip
tömörítést.
Compression.type = none | gzip
Bár a funkció csak az Apache Kafka-forgalomgyártó és a fogyasztói forgalom esetében támogatott, az AMQP-felhasználó tömörített Kafka-forgalmat használhat tömörített üzenetekként.
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.
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.