Szerkesztés

Megosztás a következőn keresztül:


Az Event Hubs integrálása kiszolgáló nélküli függvényekkel az Azure-ban

Azure Event Hubs
Azure Functions
Azure Monitor

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ó:

Event Hubs-architektúra

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.

Írás partíciókra

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.

Partíciófelhasználók

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_1Az 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 rendszer Function_1.

    Event Hubs and Functions single instance

  • 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 a Function_1 6–10. partíciókhoz Function_2.

    Event Hubs és Functions két példánnyal

  • 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 és Function_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ányok Function_1között ...Function_10.

    Event Hubs és Functions több példánysal

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ő:

A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.

Következő lépések

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.