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


Kiszolgáló nélküli adatbázis-számítástechnika az Azure Cosmos DB és az 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 darabok 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, amelyeket az Azure Functions elérhetővé tett az Azure-ökoszisztémában. Az Azure többi kiszolgáló nélküli végrehajtási környezetéről további információt a kiszolgáló nélküli Azure-oldalon talál.

Az Azure Cosmos DB és az Azure Functions natív integrációjá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. Az 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 alacsony késésű hozzáféréssel a globális felhasználói bázis gazdag adataihoz.

Áttekintés

Az Azure Cosmos DB és az Azure Functions segítségével az alábbi módokon integrálhatja adatbázisait és kiszolgáló nélküli alkalmazásait:

  • Eseményvezérelt Azure Functions-eseményindító létrehozása az Azure Cosmos DB-hez. Ez az eseményindító a 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.
  • Azt is megteheti, hogy egy Azure-függvényt egy bemeneti kötéssel köt egy Azure Cosmos DB-tárolóhoz. 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és használatával. A kimeneti kötések adatokat írnak egy tárolóba egy függvény befejeződésekor.

Feljegyzés

Az Azure Cosmos DB-hez készült Azure Functions-triggerek, bemeneti kötések és kimeneti kötések jelenleg csak a NoSQL API-hoz használhatók. Az összes többi Azure Cosmos DB API esetében a függvényből kell elérnie az adatbázist az API statikus ügyfélprogramjának használatával.

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

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

Az Azure Cosmos DB Azure Functions-eseményindítója, bemeneti kötése és kimeneti kötése 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ó kimeneti kötésével használhatók. Miután egy függvény végrehajt egy műveletet a változáscsatorna egy elemén, azt egy másik tárolóba is írhatja (ha ugyanarra a tárolóra írná, amelyből származik, gyakorlatilag rekurzív hurkot hozna létre). Az Azure Cosmos DB-hez készült Azure Functions-eseményindítóval 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 a bemeneti kötéssel szeretne megkeresni, módosítani 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-hez készült Azure Functions-eseményindító, és kimeneti kötéssel vagy anélkül is használható. Ezzel a kombinációval naprakész pénznemváltási információkat alkalmazhat (egy exchange-tárolóhoz kötött bemeneti kötéssel) a bevásárlókocsi-szolgáltatás új megrendeléseinek változáscsatornájára. A frissített bevásárlókosarak összege az aktuális pénznemkonvertálás alkalmazásával egy harmadik tárolóba írható kimeneti kötéssel.

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 Functionshez való csatlakoztatásával.

IoT-használati eset – Azure Functions-eseményindító és kimeneti kötés az Azure Cosmos DB-hez

Az IoT-implementációkban meghívhat egy függvényt, ha az ellenőrzőmotor fénye egy csatlakoztatott autóban jelenik meg.

Implementáció: Azure Functions-eseményindító é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ók az autóriasztásokkal kapcsolatos események, például a csatlakoztatott autóban megjelenő ellenőrzőmotor fényének aktiválására szolgálnak.
  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ója streameli.
  4. A rendszer meghívja az eseményindítót az érzékelő adatgyűjtésének minden adatváltozásakor, 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 osztálynak.
  6. Ha a hőmérséklet is meghaladja a megadott értéket, 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óhoz az Azure Portalon írt kód látható.

Azure Functions-eseményindító létrehozása az Azure Cosmos DB-hez az Azure Portalon

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ámla egyenlege egy bizonyos összeg alá esik.

Megvalósítás: Időzítő eseményindító egy Azure Cosmos DB bemeneti kötéssel

  1. Időzítő eseményindító használatával egy bemeneti kötés használatával lekérheti az Azure Cosmos DB-tárolóban tárolt bankszámlaegyenleg adatait időzítéssel.
  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épeken a jelen forgatókönyvhöz tartozó kód látható az Azure Portalon.

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-eseményindító é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 használatával 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.

Implementáció: Azure Functions-eseményindító é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 kimeneti kötéssel tárolja.
  3. A függvény lekérdezi a gráfadatbázist, hogy megkeresse az új felhasználóhoz közvetlenül kapcsolódó összes felhasználót, és visszaadja az adathalmazt a függvénynek.
  4. Ezek az adatok ezután az Azure Cosmos DB-ben lesznek tárolva, amelyet 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, rugalmasan hozhat létre és hívhat meg függvényeket az opcionális üzleti folyamat összetevőihez.

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

  1. Több Azure Functionst is létrehozhat, ha mindegyikhez Azure Functions-eseményindítókat ad hozzá az Azure Cosmos DB-hez – amelyek 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ókosarahoz, a rendszer minden függvényt függetlenül hív meg a bevásárlókosara tárolójának változáscsatornája.
    • Az egyik függvény az aktuális kosár tartalmát használva módosíthatja a felhasználó által esetleg érdekelni kívánt egyéb elemek megjelenítését.

    • 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 Functionst 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 rendelésfeldolgozási eseményeit.

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

Eszközök

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

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

Az Azure Functions lehetővé teszi skálázható munkaegységek vagy tömör logikai elemek létrehozását, amelyek igény szerint futtathatók infrastruktúra kiépítése és kezelése nélkül. Az Azure Functions használatával nem kell teljes körű alkalmazást létrehoznia ahhoz, hogy reagáljon az Azure Cosmos DB-adatbázis változásaira, 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 válaszul, 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úrához ajánlott adatbázis 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 hozzáadhat új elemeket az adatbázishoz, és azonnali hozzáféréssel rendelkezhet az Azure Functionsen 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ármilyen adatkimenetét. Ez a "bármi kezelése" megközelítéssel egyszerűen létrehozhat különböző függvényeket, amelyek mindegyike az Azure Cosmos DB-hez lesz kimenetben.

  • 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 több 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. A lefoglalt RU/s használatával minden függvény párhuzamosan működhet, és az adatok garantáltan konzisztensek lesznek.

  • 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 tartózkodási helyéhez legközelebb eső adatok földrajzi helyének meghatározásával. 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 szeretné az Azure Functionst 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, az Azure Blob Storage-eseményindító jobb megoldás lehet.

Az Azure Functions előnyei:

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

  • Nincsenek korlátok. A függvények párhuzamosan futnak, és a szolgáltatás a szükségesnél többre pörög. Beállítja a paramétereket.

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

Ha nem biztos abban, hogy a Flow, a Logic Apps, az 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ás című témakört.

Következő lépések

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