Rendelkezésre állás és konzisztencia az Event Hubsban

Ez a cikk a Azure Event Hubs által támogatott rendelkezésre állással és konzisztenciával kapcsolatos információkat tartalmaz.

Rendelkezésre állás

Azure Event Hubs az egyes gépek vagy akár teljes állványok katasztrofális meghibásodásának kockázatát szórja szét olyan fürtök között, amelyek egy adatközponton belül több hibatartományra is kiterjednek. Transzparens hibaészlelési és feladatátvételi mechanizmusokat valósít meg, hogy a szolgáltatás továbbra is a biztosított szolgáltatási szinteken, jellemzően észrevehető megszakítások nélkül működjön, amikor ilyen hibák történnek.

Ha az Event Hubs-névtér rendelkezésre állási zónákkal rendelkező régióban jön létre, a kimaradás kockázata tovább oszlik három fizikailag elkülönített létesítmény között, és a szolgáltatás elegendő kapacitástartalékkal rendelkezik ahhoz, hogy azonnal megbirkózzon a teljes létesítmény teljes, katasztrofális veszteségével. További információ: Azure Event Hubs – Georedundáns vészhelyreállítás.

Amikor egy ügyfélalkalmazás partíció megadása nélkül küld eseményeket egy eseményközpontnak, az események automatikusan el lesznek osztva az eseményközpont partíciói között. Ha egy partíció valamilyen okból nem érhető el, az események el vannak osztva a többi partíció között. Ez a viselkedés teszi lehetővé a legtöbb időt. A maximális üzemidőt igénylő használati esetekben ezt a modellt részesíti előnyben ahelyett, hogy eseményeket küldene egy adott partícióra.

Konzisztencia

Bizonyos esetekben fontos lehet az események sorrendje. Előfordulhat például, hogy azt szeretné, hogy a háttérrendszer feldolgozz egy frissítési parancsot a törlési parancs előtt. Ebben a forgatókönyvben az ügyfélalkalmazás eseményeket küld egy adott partícióra, hogy a rendezés megmaradjon. Amikor egy fogyasztói alkalmazás felhasználja ezeket az eseményeket a partícióból, a rendszer sorrendben olvassa be őket.

Ezzel a konfigurációval ne feledje, hogy ha az adott partíció, amelyre küld, nem érhető el, hibaüzenet jelenik meg. Összehasonlításképpen, ha nincs affinitása egyetlen partícióhoz, az Event Hubs szolgáltatás elküldi az eseményt a következő elérhető partícióra.

Ezért ha a magas rendelkezésre állás a legfontosabb, ne célozzon meg egy adott partíciót (partícióazonosító/kulcs használatával). A partícióazonosító/kulcs használata az eseményközpontok rendelkezésre állását a partíciószintre gradiensre váltja. Ebben a forgatókönyvben explicit módon választ a rendelkezésre állás (partícióazonosító/kulcs nélkül) és a konzisztencia (események rögzítése egy adott partícióra) között. Az Event Hubs partícióival kapcsolatos részletes információkért lásd: Partíciók.

Függelék

Események küldése partíció megadása nélkül

Azt javasoljuk, hogy a partícióadatok beállítása nélkül küldjön eseményeket egy eseményközpontba, hogy az Event Hubs szolgáltatás kiegyensúlyozza a terhelést a partíciók között. Az alábbi rövid útmutatóból megtudhatja, hogyan teheti ezt meg különböző programozási nyelveken.

Események küldése egy adott partícióra

Ebben a szakaszban megtudhatja, hogyan küldhet eseményeket egy adott partícióra különböző programozási nyelvek használatával.

Ha eseményeket szeretne küldeni egy adott partícióra, hozza létre a köteget az EventHubProducerClient.CreateBatchAsync metódussal a PartitionId vagy a PartitionKeyCreateBatchOptions paranccsal. A következő kód egy eseményköteget küld egy adott partícióra egy partíciókulcs megadásával. Az Event Hubs biztosítja, hogy a partíciókulcs-értékkel rendelkező összes esemény együtt legyen tárolva, és érkezési sorrendben legyen kézbesítve.

var batchOptions = new CreateBatchOptions { PartitionKey = "cities" };
using var eventBatch = await producer.CreateBatchAsync(batchOptions);

Az EventHubProducerClient.SendAsync metódust is használhatja a PartitionId vagy a PartitionKey megadásával a SendEventOptionsban.

var sendEventOptions  = new SendEventOptions { PartitionKey = "cities" };
// create the events array
producer.SendAsync(events, sendOptions)

Következő lépések

Az alábbi webhelyeken további információt talál az Event Hubsról: