Partíciók dinamikus hozzáadása egy eseményközponthoz (Apache Kafka-témakör)

Az Event Hubs üzenetstreamelést biztosít egy particionált felhasználói mintán keresztül, amelyben mindegyik felhasználó az üzenetstream csak egy adott részét, vagyis partícióját olvassa. Ez a minta biztosítja a horizontális skálázhatóságot az eseményfeldolgozáshoz, és egyéb, streamközpontú szolgáltatásokat is nyújt, amelyek az üzenetsorokban vagy témakörökben nem érhetők el. A partíció események egy rendezett sorozata az eseményközpontban. Az újabb események érkezésekor a rendszer hozzáadja őket a sorozat végéhez. A partíciókkal kapcsolatos további információkért lásd : Partíciók

Az eseményközpont létrehozásakor megadhatja a partíciók számát. Bizonyos esetekben előfordulhat, hogy az eseményközpont létrehozása után partíciókat kell hozzáadnia. Ez a cikk azt ismerteti, hogyan adhat hozzá partíciókat dinamikusan egy meglévő eseményközponthoz.

Fontos

A partíciók dinamikus hozzáadása csak az Event Hubs prémium és dedikált szintjeiben érhető el.

Feljegyzés

Apache Kafka-ügyfelek esetén egy eseményközpont egy Kafka-témakörre képez le. További leképezések az Azure Event Hubs és az Apache Kafka között: Kafka és Event Hubs fogalmi leképezés

A partíciók számának frissítése

Ez a szakasz bemutatja, hogyan frissítheti az eseményközpontok partíciószámát különböző módokon (PowerShell, parancssori felület stb.).

PowerShell

Az eseményközpont partícióinak frissítéséhez használja a Set-AzEventHub PowerShell parancsot.

Set-AzEventHub -ResourceGroupName MyResourceGroupName -Namespace MyNamespaceName -Name MyEventHubName -partitionCount 12

parancssori felület

Az eseményközpont partícióinak frissítéséhez használja a az eventhubs eventhub update CLI-parancsot.

az eventhubs eventhub update --resource-group MyResourceGroupName --namespace-name MyNamespaceName --name MyEventHubName --partition-count 12

Resource Manager-sablon

Frissítse a partitionCount tulajdonság értékét a Resource Manager-sablonban, és telepítse újra a sablont az erőforrás frissítéséhez.

    {
        "apiVersion": "2017-04-01",
        "type": "Microsoft.EventHub/namespaces/eventhubs",
        "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'))]",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]"
        ],
        "properties": {
            "messageRetentionInDays": 7,
            "partitionCount": 12
        }
    }

Apache Kafka

A partíciók számának növeléséhez használja az AlterTopics API-t (például kafka-topics CLI-eszközzel). További részletekért lásd : Kafka-témakörök módosítása.

Event Hubs-ügyfelek

Nézzük meg, hogyan viselkednek az Event Hubs-ügyfelek, amikor a partíciók száma frissül egy eseményközponton.

Ha partíciót ad hozzá egy meglévő páros központhoz, az eseményközpont-ügyfél a szolgáltatástól kap egy MessagingException értesítést, amely tájékoztatja az ügyfeleket arról, hogy az entitás metaadatai (az entitás az eseményközpont, a metaadatok pedig a partícióadatok) módosultak. Az ügyfelek automatikusan újra megnyitják az AMQP-hivatkozásokat, amelyek ezután felveszik a módosított metaadat-információkat. Az ügyfelek ezután normálisan működnek.

Feladói/gyártói ügyfelek

Az Event Hubs három feladói lehetőséget biztosít:

  • Partíciók küldője – Ebben az esetben az ügyfelek közvetlenül egy partícióra küldik az eseményeket. Bár a partíciók azonosíthatók, és az események közvetlenül is elküldhetők hozzájuk, ezt a mintát nem javasoljuk. A partíciók hozzáadása nem befolyásolja ezt a forgatókönyvet. Javasoljuk, hogy indítsa újra az alkalmazásokat, hogy észleljék az újonnan hozzáadott partíciókat.
  • Partíciókulcs feladója – ebben az esetben az ügyfelek egy kulccsal küldik el az eseményeket, így az adott kulcshoz tartozó összes esemény ugyanabba a partícióba kerül. Ebben az esetben a szolgáltatás kivonatozza a kulcsot és a megfelelő partícióhoz vezető útvonalakat. A partíciók számának frissítése a kivonatolás módosítása miatt rendelésen kívüli problémákat okozhat. Így ha érdekli a rendezés, győződjön meg arról, hogy az alkalmazás a meglévő partíciók összes eseményét felhasználja a partíciók számának növelése előtt.
  • Ciklikus időszeletelés küldője (alapértelmezett) – Ebben a forgatókönyvben az Event Hubs szolgáltatás a partíciók közötti eseményeket ciklikus időszeletelésre fordítja, és terheléselosztási algoritmust is használ. Az Event Hubs szolgáltatás tisztában van a partíciók számának változásaival, és a partíciók számának módosításától számított másodperceken belül elküldi az új partícióknak.

Vevői/fogyasztói ügyfelek

Az Event Hubs közvetlen fogadókat és egy egyszerű, event processor nevű fogyasztói kódtárat biztosít.

  • Közvetlen fogadók – A közvetlen fogadók adott partíciókat figyelnek. A futtatókörnyezet viselkedésére nincs hatással, ha a partíciók felskálázva vannak egy eseményközpontban. A közvetlen fogadókat használó alkalmazásnak gondoskodnia kell az új partíciók felvételéről és a fogadók megfelelő hozzárendeléséről.

  • Eseményfeldolgozó állomás – Ez az ügyfél nem frissíti automatikusan az entitás metaadatait. Tehát nem veszi fel a partíciók számának növekedését. Az eseményfeldolgozó példány ismételt létrehozása entitás-metaadatok beolvasását eredményezi, amely új blobokat hoz létre az újonnan hozzáadott partíciókhoz. A már meglévő blobok nem lesznek hatással. Az összes eseményfeldolgozó példány újraindítása ajánlott annak biztosítása érdekében, hogy minden példány tisztában legyen az újonnan hozzáadott partíciókkal, és a terheléselosztás megfelelően legyen kezelve a felhasználók körében.

    Ha a .NET SDK (WindowsAzure.ServiceBus) régi verzióját használja, az eseményfeldolgozó állomás újraindításkor eltávolít egy meglévő ellenőrzőpontot, ha az ellenőrzőpont partíciószáma nem egyezik a szolgáltatásból beolvasott partíciók számával. Ez a viselkedés hatással lehet az alkalmazásra.

    2026. szeptember 30-án kivonjuk az Azure Service Bus SDK-kódtárakat a WindowsAzure.ServiceBus, a Microsoft.Azure.ServiceBus és a com.microsoft.azure.servicebus kódtárakból, amelyek nem felelnek meg az Azure SDK irányelveinek. Az SBMP protokoll támogatását is megszüntetjük, így 2026. szeptember 30. után már nem használhatja ezt a protokollt. Migrálás a legújabb Azure SDK-kódtárakba, amelyek kritikus fontosságú biztonsági frissítéseket és továbbfejlesztett képességeket kínálnak ezen dátum előtt.

    Bár a régebbi kódtárak 2026. szeptember 30-tól továbbra is használhatók, a Microsoft már nem kap hivatalos támogatást és frissítéseket. További információkért lásd a támogatási nyugdíjazási bejelentést.

Apache Kafka-ügyfelek

Ez a szakasz azt ismerteti, hogy az Azure Event Hubs Kafka-végpontját használó Apache Kafka-ügyfelek hogyan viselkednek az eseményközpont partíciószámának frissítésekor.

Azok a Kafka-ügyfelek, amelyek az Apache Kafka protokollal használják az Event Hubsot, másképp viselkednek, mint az AMQP protokollt használó event hub-ügyfelek. A Kafka-ügyfelek ezredmásodpercenként metadata.max.age.ms egyszer frissítik a metaadataikat. Ezt az értéket az ügyfélkonfigurációkban kell megadnia. A librdkafka kódtárak is ugyanazt a konfigurációt használják. A metaadatok frissítései tájékoztatják az ügyfeleket a szolgáltatás változásairól, beleértve a partíciók számának növelését is. A konfigurációk listáját az Event Hubs Apache Kafka-konfigurációiban találja.

Feladói/gyártói ügyfelek

A gyártók mindig azt diktálják, hogy a küldési kérések tartalmazzák az egyes létrehozott rekordok partíciócélját. Tehát az összes termék particionálása ügyféloldalon történik a közvetítő metaadatainak gyártói nézetével. Miután hozzáadta az új partíciókat a gyártó metaadatnézetéhez, azok elérhetők lesznek a produceri kérésekhez.

Fogyasztói/vevő ügyfelek

Amikor egy fogyasztói csoporttag metaadat-frissítést végez, és felveszi az újonnan létrehozott partíciókat, az a tag kezdeményezi a csoport újraegyensúlyozását. A felhasználói metaadatok ezután frissülnek az összes csoporttag esetében, és az új partíciókat a kiosztott újraegyensúlyozási vezető rendeli hozzá.

Ajánlások

  • Ha partíciókulcsot használ a gyártói alkalmazásokkal, és a kulcskivonatolástól függ, hogy biztosan rendezze a partíciókat, nem ajánlott dinamikusan hozzáadni a partíciókat.

    Fontos

    Bár a meglévő adatok megőrzik a sorrendet, a partíciókivonatolás megszakad a partíciók hozzáadása miatt a partíciók számának módosítása után kivonatolt üzenetek esetében.

  • A következő esetekben javasolt partíció hozzáadása egy meglévő témakörhöz vagy eseményközpont-példányhoz:

    • Amikor az események küldésének alapértelmezett módszerét használja
    • Kafka alapértelmezett particionálási stratégiák, példa – Sticky Assignor stratégia

Következő lépések

A partíciókról további információt a Partíciók című témakörben talál.