Az Azure Event Hubsot és az Azure Functionst használó megoldások olyan kiszolgáló nélküli architektúra előnyeit élvezhetik, amely méretezhető, költséghatékony és nagy mennyiségű adat közel valós idejű feldolgozására képes. Bármennyire is zökkenőmentesen működnek együtt ezek a szolgáltatások, számos olyan funkció, beállítás és bonyolultság van, amely összetettebbé teszi a kapcsolatot. Ez a cikk útmutatást nyújt az integráció hatékony kihasználásához a teljesítmény, a rugalmasság, a biztonság, a megfigyelhetőség és a skálázás fő szempontjainak és technikáinak kiemelésével.
Az Event Hubs alapfogalmai
Az Azure Event Hubs egy nagymértékben skálázható eseményfeldolgozó szolgáltatás, amely másodpercenként több millió eseményt fogadhat. Mielőtt áttekintené az Azure Functions-integráció mintáit és ajánlott eljárásait, érdemes megismernie az Event Hubs alapvető összetevőit.
Az alábbi ábrán az Event Hubs streamfeldolgozási architektúrája látható:
esemény
Az esemény olyan értesítés vagy állapotváltozás, amely a múltban történt tényként jelenik meg. Az események nem módosíthatók és megmaradnak egy eseményközpontban, más néven a Kafkában. Az eseményközpontok egy vagy több partícióból állnak.
Partíciók
Ha a feladó nem adott meg partíciót, a fogadott események az eseményközpont partíciói között lesznek elosztva. Minden esemény pontosan egy partícióban van megírva, és nem több partícióból áll. Minden partíció naplóként működik, ahol a rekordok csak hozzáfűző mintában vannak megírva. A véglegesítési naplók analógiáját gyakran használják annak leírására, hogy az események hogyan lesznek hozzáadva egy partíció sorozatának végéhez.
Ha több partíciót használ, lehetővé teszi a párhuzamos naplók használatát ugyanazon eseményközponton belül. Ez a viselkedés több fokú párhuzamosságot biztosít, és javítja az átviteli sebességet a fogyasztók számára.
Fogyasztók és fogyasztói csoportok
A partíciókat több felhasználó is használhatja, és mindegyik saját eltolásokat olvas be és kezel.
Az Event Hubs a fogyasztói csoportok fogalmával rendelkezik, amely lehetővé teszi, hogy több fogyasztó alkalmazás külön nézettel rendelkezzen az eseménystreamről, és önállóan, saját ütemben és saját eltolásokkal olvassa be a streamet.
További információkért tekintse meg az Event Hubs alapfogalmait és funkcióit bemutató részletes útmutatót.
Események felhasználása az Azure Functions használatával
Az Azure Functions támogatja az Event Hubs eseményindító - és kimeneti kötéseit. Ez a szakasz azt ismerteti, hogy az Azure Functions hogyan reagál az eseményközpont eseményfolyamára eseményindítókkal küldött eseményekre.
Az Event Hubs által aktivált függvények minden példányát egyetlen EventProcessorHost-példány készíti el. Az eseményindító (az Event Hubs segítségével) biztosítja, hogy csak egy EventProcessorHost-példány kapjon bérletet egy adott partíción.
Vegyük például az alábbi jellemzőkkel rendelkező eseményközpontot:
- 10 partíció.
- 1000 esemény van elosztva az összes partíció között, és az egyes partíciókban eltérő számú üzenet található.
Amikor a függvény először engedélyezve van, a függvénynek csak egy példánya van. Hívjuk meg az első függvénypéldányt Function_1
. Function_1
Az EventProcessorHost egyetlen példányával rendelkezik, amely mind a 10 partíción tartalmaz bérletet. Ez a példány az 1–10. partíciók eseményeit olvassa be. Ettől a ponttól kezdve az alábbiak egyike történik:
Nincs szükség új függvénypéldányokra:
Function_1
mind az 1000 eseményt feldolgozhatja, mielőtt a Functions skálázási logikája érvénybe lép. Ebben az esetben mind az 1000 üzenetet feldolgozzák a rendszerFunction_1
.Hozzáadunk egy további függvénypéldányt: az eseményalapú skálázás vagy más automatizált vagy manuális logika azt állapíthatja meg, hogy
Function_1
több üzenete van, mint amennyit feldolgozhat, majd létrehoz egy új függvényalkalmazás-példányt (Function_2
). Ez az új függvény az EventProcessorHost társított példányával is rendelkezik. Mivel a mögöttes eseményközpont azt észleli, hogy egy új gazdagéppéldány üzeneteket próbál olvasni, terheléselosztást alkalmaz a partíciók között a gazdagéppéldányok között. Az 1–5. partíciók például hozzárendelhetők aFunction_1
6–10. partíciókhozFunction_2
.N további függvénypéldányok is hozzáadódnak: az eseményalapú skálázás vagy más automatizált vagy manuális logika azt határozza meg, hogy mindkettő
Function_1
ésFunction_2
több üzenete van, mint amennyit feldolgozhatnak, új Function_N függvényalkalmazás-példányok jönnek létre. A példányok arra a pontra jönnek létre, ahol az N egyenlő vagy nagyobb, mint az eseményközpont partícióinak száma. A példánkban az Event Hubs ismét betölti a partíciókat, ebben az esetben a példányokFunction_1
között ...Function_10
.
A skálázás során az N-példányok száma nagyobb lehet, mint az eseményközpont partícióinak száma. Ez a helyzet akkor fordulhat elő, ha az eseményvezérelt skálázás stabilizálja a példányok számát, vagy mert más automatizált vagy manuális logika több példányt hozott létre, mint a partíciók. Ebben az esetben az EventProcessorHost-példányok csak akkor szereznek be zárolásokat a partíciókon, amikor elérhetővé válnak más példányokból, mivel egy adott időpontban csak egy, ugyanazon fogyasztói csoportból származó függvénypéldány fér hozzá/olvashat a zárolt partíciókból.
Ha az összes függvény végrehajtása befejeződött (hibákkal vagy hiba nélkül), az ellenőrzőpontok a társított tárfiókra lesznek kötelezve. Ha az ellenőrzőpontozás sikeres, a függvény készen áll egy új eseményköteg feldolgozására.
A dinamikus, eseményalapú skálázás a Fogyasztás, a Rugalmas felhasználás és a Prémium Azure-csomagok esetében lehetséges. A Kubernetes által üzemeltetett függvényalkalmazások az Event Hubs KEDA-skálázóját is kihasználhatják. Az eseményalapú skálázás jelenleg nem lehetséges, ha a függvényalkalmazás dedikált (App Service) csomagban van üzemeltetve, ami megköveteli a megfelelő példányszám meghatározását a számítási feladat alapján.
További információ: Azure Event Hubs-kötések az Azure Functionshez és az Azure Event Hubs-eseményindító az Azure Functionshez.
Közreműködők
Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.
Fő szerző:
- David Barkol | Fő megoldás– speciális GBB
A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.
Következő lépések
Kapcsolódó erőforrás
A kiszolgáló nélküli eseményfeldolgozás egy referenciaarchitektúra, amely egy ilyen típusú tipikus architektúrát részletez, kódmintákkal és fontos szempontok megvitatásával.