Kiszolgáló nélküli adatbázis-számítástechnika az Azure Cosmos DB és Azure Functions használatával

A KÖVETKEZŐRE VONATKOZIK: NoSQL

A kiszolgáló nélküli számítástechnika lényege, hogy az egyes logikai elemekre összpontosítson, amelyek megismételhetők és állapot nélküliek. Ezek a részek nem igényelnek infrastruktúra-kezelést, és csak másodpercig vagy ezredmásodpercig használnak fel erőforrásokat. A kiszolgáló nélküli számítástechnika mozgatásának középpontjában olyan függvények állnak, amelyek az Azure-ökoszisztémában Azure Functions érhetők el. Az Azure egyéb kiszolgáló nélküli végrehajtási környezeteiről további információt a kiszolgáló nélküli azure-beli oldalon talál.

Az Azure Cosmos DB és a Azure Functions közötti natív integrációval közvetlenül az Azure Cosmos DB-fiókból hozhat létre adatbázis-eseményindítókat, bemeneti kötéseket és kimeneti kötéseket. A Azure Functions és az Azure Cosmos DB használatával eseményvezérelt kiszolgáló nélküli alkalmazásokat hozhat létre és helyezhet üzembe, amelyek alacsony késéssel férnek hozzá a globális felhasználói bázis gazdag adataihoz.

Áttekintés

Az Azure Cosmos DB és Azure Functions lehetővé teszik az adatbázisok és kiszolgáló nélküli alkalmazások integrálását a következő módokon:

  • Eseményvezérelt Azure Functions-eseményindító létrehozása az Azure Cosmos DB-hez. Ez az eseményindító változáscsatorna-adatfolyamokra támaszkodik az Azure Cosmos DB-tároló változásainak figyeléséhez. Amikor módosításokat végez egy tárolón, a rendszer elküldi a változáscsatorna-adatfolyamot az eseményindítónak, amely meghívja az Azure-függvényt.
  • Másik lehetőségként kösse egy Azure-függvényt egy Azure Cosmos DB-tárolóhoz egy bemeneti kötéssel. A bemeneti kötések adatokat olvasnak be egy tárolóból egy függvény végrehajtásakor.
  • Függvény kötése egy Azure Cosmos DB-tárolóhoz kimeneti kötéssel. A kimeneti kötések adatokat írnak egy tárolóba, amikor egy függvény befejeződik.

Megjegyzés

Jelenleg Azure Functions eseményindítók, bemeneti kötések és kimeneti kötések az Azure Cosmos DB-hez csak a NoSQL API-hoz használhatók. Az összes többi Azure Cosmos DB API esetében az API statikus ügyféllel kell elérnie az adatbázist a függvényből.

Az alábbi ábra az alábbi három integráció mindegyikét szemlélteti:

Az Azure Cosmos DB és Azure Functions integrálása

Az Azure Cosmos DB-hez készült Azure Functions eseményindító, bemeneti kötés és kimeneti kötés a következő kombinációkban használható:

  • Az Azure Cosmos DB-hez készült Azure Functions eseményindítók egy másik Azure Cosmos DB-tárolóhoz való kimeneti kötéssel használhatók. Miután egy függvény végrehajtott egy műveletet a változáscsatorna egyik elemén, megírhatja egy másik tárolóba (ha ugyanarra a tárolóra írja, amelyből származik, hatékonyan létrehozna egy rekurzív hurkot). Vagy használhat egy Azure Functions eseményindítót az Azure Cosmos DB-hez, amellyel hatékonyan migrálhatja az összes módosított elemet egy tárolóból egy másik tárolóba egy kimeneti kötés használatával.
  • Az Azure Cosmos DB bemeneti kötései és kimeneti kötései ugyanabban az Azure-függvényben használhatók. Ez akkor működik jól, ha bizonyos adatokat szeretne megkeresni a bemeneti kötéssel, módosítani azOkat az Azure-függvényben, majd menteni ugyanahhoz a tárolóhoz vagy egy másik tárolóhoz a módosítás után.
  • Az Azure Cosmos DB-tárolók bemeneti kötése ugyanabban a függvényben használható, mint az Azure Cosmos DB Azure Functions eseményindítója, és kimeneti kötéssel vagy anélkül is használható. Ezt a kombinációt arra használhatja, hogy naprakész pénznemváltási információkat (egy cseretároló bemeneti kötésével) alkalmazzon a bevásárlókocsi-szolgáltatás új megrendeléseinek változáscsatornájára. A frissített bevásárlókocsi-összeg az aktuális pénznemkonvertálás alkalmazásával egy kimeneti kötéssel írható egy harmadik tárolóba.

Használati esetek

Az alábbi használati esetek bemutatják, hogyan hozhatja ki a legtöbbet az Azure Cosmos DB-adatokból az adatok eseményvezérelt Azure Functions összekapcsolásával.

IoT-használati eset – Azure Functions trigger- és kimeneti kötés az Azure Cosmos DB-hez

Az IoT-implementációkban meghívhat egy függvényt, amikor a motor ellenőrzőlámpája egy csatlakoztatott autóban jelenik meg.

Végrehajtása: Azure Functions trigger- és kimeneti kötés használata az Azure Cosmos DB-hez

  1. Az Azure Cosmos DB-hez készült Azure Functions eseményindítóval aktiválhatók az autóriasztásokhoz kapcsolódó események, például a csatlakoztatott autóban megjelenő ellenőrzőmotor fénye.
  2. Amikor megjelenik az ellenőrzőmotor fénye, a rendszer elküldi az érzékelő adatait az Azure Cosmos DB-nek.
  3. Az Azure Cosmos DB új érzékelőadat-dokumentumokat hoz létre vagy frissít, majd ezeket a módosításokat az Azure Cosmos DB Azure Functions eseményindítójára streameli.
  4. A rendszer meghívja az eseményindítót az érzékelő adatgyűjtésének minden adatváltozásán, mivel az összes módosítást a változáscsatornán keresztül streameli a rendszer.
  5. A függvény egy küszöbérték-feltétellel küldi el az érzékelő adatait a jótállási részlegnek.
  6. Ha a hőmérséklet is egy bizonyos érték felett van, a rendszer riasztást is küld a tulajdonosnak.
  7. A függvény kimeneti kötése frissíti az autórekordot egy másik Azure Cosmos DB-tárolóban az ellenőrzőmotor eseményével kapcsolatos információk tárolásához.

Az alábbi képen az eseményindító Azure Portal írt kód látható.

Hozzon létre egy Azure Functions eseményindítót az Azure Cosmos DB-hez a Azure Portal

Pénzügyi használati eset – Időzítő eseményindítója és bemeneti kötése

A pénzügyi megvalósításokban meghívhat egy függvényt, ha egy bankszámlaegyenleg egy bizonyos összeg alá esik.

Végrehajtása: Időzítő eseményindító Azure Cosmos DB bemeneti kötéssel

  1. Időzítő eseményindító használatával egy bemeneti kötéssel lekérheti az Azure Cosmos DB-tárolóban tárolt bankszámlaegyenleg-adatokat időzított időközönként.
  2. Ha az egyenleg a felhasználó által beállított alacsony egyenleg küszöbértéke alatt van, kövesse az Azure-függvény egy műveletét.
  3. A kimeneti kötés lehet Egy SendGrid-integráció , amely e-mailt küld egy szolgáltatásfiókból az egyes alacsony egyenlegű fiókokhoz azonosított e-mail-címekre.

Az alábbi képek a forgatókönyv Azure Portal kódját mutatják be.

Index.js pénzügyi forgatókönyv időzítő eseményindítójának fájlja

Run.csx fájl egy pénzügyi forgatókönyv időzítő eseményindítójához

Játékhasználati eset – Azure Functions trigger- és kimeneti kötés az Azure Cosmos DB-hez

Ha új felhasználót hoz létre, a Gremlinhez készült Azure Cosmos DB-vel megkeresheti azokat a felhasználókat, akik ismerhetik őket. Ezután az eredményeket egy Azure Cosmos DB-be vagy SQL-adatbázisba írhatja a könnyű lekérés érdekében.

Végrehajtása: Azure Functions trigger- és kimeneti kötés használata az Azure Cosmos DB-hez

  1. Ha egy Azure Cosmos DB gráfadatbázist használ az összes felhasználó tárolására, létrehozhat egy új függvényt egy Azure Functions eseményindítóval az Azure Cosmos DB-hez.
  2. Amikor új felhasználót szúr be, a rendszer meghívja a függvényt, majd az eredményt egy kimeneti kötéssel tárolja.
  3. A függvény lekérdezi a gráfadatbázist, hogy megkeresse az összes olyan felhasználót, aki közvetlenül kapcsolódik az új felhasználóhoz, és visszaadja az adathalmazt a függvénynek.
  4. Ezek az adatok ezután az Azure Cosmos DB-ben vannak tárolva, amelyeket aztán könnyedén lekérhet bármely olyan előtér-alkalmazás, amely megjeleníti az új felhasználónak a csatlakoztatott barátait.

Kiskereskedelmi használati eset – Több függvény

A kiskereskedelmi implementációkban, amikor egy felhasználó hozzáad egy elemet a kosárhoz, most már rugalmasan hozhat létre és hívhat meg függvényeket az opcionális üzleti folyamatok összetevőihez.

Végrehajtása: Több Azure Functions eseményindító az Azure Cosmos DB-hez egy tároló figyeléséhez

  1. Több Azure Functions is létrehozhat, ha Azure Functions eseményindítókat ad hozzá mindegyikhez az Azure Cosmos DB-hez– ezek mindegyike ugyanazt a bevásárlókocsi-adatcsatornát figyeli. Ha több függvény figyeli ugyanazt a változáscsatornát, minden függvényhez új bérletgyűjteményre van szükség. A bérletgyűjteményekről további információt a Változáscsatorna-feldolgozó kódtár ismertetése című témakörben talál.
  2. Amikor új elemet ad hozzá egy felhasználó bevásárlókocsihoz, minden függvényt függetlenül hív meg a változáscsatorna a bevásárlókocsi-tárolóból.
    • Az egyik függvény az aktuális kosár tartalmának használatával módosíthatja az egyéb elemek megjelenítését, amelyek iránt a felhasználó érdeklődhet.

    • Egy másik függvény frissítheti a készletösszegeket.

    • Egy másik funkció bizonyos termékekre vonatkozó ügyféladatokat küldhet a marketing részlegnek, akik promóciós levelezőt küldenek nekik.

      Bármely részleg létrehozhat egy Azure Functions az Azure Cosmos DB-hez a változáscsatorna figyelésével, és győződjön meg arról, hogy nem késleltetik a folyamat kritikus megrendelésfeldolgozási eseményeit.

Az összes ilyen használati esetben, mivel a függvény leválasztotta magát az alkalmazást, nem kell mindig új alkalmazáspéldányokat létrehoznia. Ehelyett Azure Functions egyes függvényeket pörget fel, hogy igény szerint különálló folyamatokat hajtson végre.

Eszközök

Az Azure Cosmos DB és a Azure Functions natív integrációja a Azure Portal és a Visual Studióban érhető el.

Miért érdemes Azure Functions integrációt választani a kiszolgáló nélküli számítástechnikához?

Azure Functions lehetővé teszi, hogy skálázható munkaegységeket vagy tömör logikai elemeket hozzon létre, amelyek igény szerint futtathatók infrastruktúra kiépítése és kezelése nélkül. A Azure Functions használatával nem kell teljes körű alkalmazást létrehoznia az Azure Cosmos DB-adatbázisban bekövetkező változásokra való reagáláshoz, létrehozhat kis, újrafelhasználható függvényeket bizonyos feladatokhoz. Emellett az Azure Cosmos DB-adatokat is használhatja egy Azure-függvény bemeneteként vagy kimeneteként olyan eseményekre adott válaszként, mint a HTTP-kérések vagy az időzított eseményindítók.

Az Azure Cosmos DB a kiszolgáló nélküli számítási architektúra ajánlott adatbázisa a következő okokból:

  • Azonnali hozzáférés az összes adathoz: Részletes hozzáféréssel rendelkezik minden tárolt értékhez, mivel az Azure Cosmos DB alapértelmezés szerint automatikusan indexeli az összes adatot, és azonnal elérhetővé teszi ezeket az indexeket. Ez azt jelenti, hogy folyamatosan lekérdezhet, frissíthet és új elemeket vehet fel az adatbázisba, és azonnali hozzáféréssel rendelkezhet az Azure Functions keresztül.

  • Séma nélküli. Az Azure Cosmos DB séma nélküli, így egyedileg képes kezelni az Azure-függvények bármely adatkimenetét. Ez a "mindent kezel" megközelítéssel egyszerűen hozhat létre különböző függvényeket, amelyek mindegyike az Azure Cosmos DB-nek ad ki kimenetet.

  • Skálázható átviteli sebesség. Az átviteli sebesség azonnal fel- és leskálázható az Azure Cosmos DB-ben. Ha több száz vagy ezer függvényt kérdez le és ír ugyanarra a tárolóra, vertikálisan felskálázhatja az RU/s-t a terhelés kezeléséhez. Minden függvény párhuzamosan működhet a lefoglalt RU/s használatával, és az adatok garantáltan konzisztensek.

  • Globális replikáció. Az Azure Cosmos DB-adatokat a világ minden tájáról replikálhatja a késés csökkentése érdekében, és földrajzilag a felhasználók helyéhez legközelebb eső adatokat helyezheti el. Az összes Azure Cosmos DB-lekérdezéshez hasonlóan az eseményvezérelt eseményindítók adatai is a felhasználóhoz legközelebbi Azure Cosmos DB-ből olvasnak be adatokat.

Ha integrálni szeretne a Azure Functions az adatok tárolásához, és nincs szüksége mély indexelésre, vagy ha mellékleteket és médiafájlokat kell tárolnia, a Azure Blob Storage eseményindító jobb megoldás lehet.

A Azure Functions előnyei:

  • Eseményvezérelt. Azure Functions eseményvezérelt, és meghallgathatja az Azure Cosmos DB változáscsatornáit. Ez azt jelenti, hogy nem kell figyelési logikát létrehoznia, csak figyelnie kell a figyelt módosításokat.

  • Nincsenek korlátok. A függvények párhuzamosan futnak, és a szolgáltatás a szükséges számúra pörög. Beállítja a paramétereket.

  • Jó a gyors feladatokhoz. A szolgáltatás új függvénypéldányokat aktivál, amikor egy esemény aktiválódik, és bezárja őket, amint a függvény befejeződik. Csak a függvények futási idejéért kell fizetnie.

Ha nem biztos abban, hogy a Flow, a Logic Apps, a Azure Functions vagy a WebJobs a legmegfelelőbb a megvalósításhoz, olvassa el a Flow, a Logic Apps, a Functions és a WebJobs közötti választást ismertető cikket.

Következő lépések

Most kapcsoljuk össze az Azure Cosmos DB-t és a Azure Functions valós: