Bezserverová databázová architektura s využitím služby Azure Cosmos DB a Azure Functions

PLATÍ PRO: NoSQL

Bezserverová architektura je především o schopnosti soustředit se na jednotlivé části logiky, které jsou opakovatelné a bezstavové. Tyto části nevyžadují žádnou správu infrastruktury a spotřebovávají prostředky pouze po dobu sekund nebo milisekund, po kterou běží. Jádrem pohybu bezserverové architektury jsou funkce, které jsou v ekosystému Azure dostupné Azure Functions. Informace o dalších bezserverových spouštěcích prostředích v Azure najdete na stránce Bezserverová na stránce Azure .

Díky nativní integraci mezi službou Azure Cosmos DB a Azure Functions můžete vytvářet triggery databáze, vstupní vazby a výstupní vazby přímo z účtu služby Azure Cosmos DB. Pomocí Azure Functions a Azure Cosmos DB můžete vytvářet a nasazovat bezserverové aplikace řízené událostmi s přístupem s nízkou latencí k bohatým datům pro globální uživatelskou základnu.

Přehled

Azure Cosmos DB a Azure Functions umožňují integrovat databáze a bezserverové aplikace následujícími způsoby:

  • Vytvořte trigger Azure Functions řízený událostmi pro službu Azure Cosmos DB. Tento trigger spoléhá na streamy kanálu změn , které monitorují změny v kontejneru Služby Azure Cosmos DB. Po provedení jakýchkoli změn v kontejneru se datový proud kanálu změn odešle do triggeru, který vyvolá funkci Azure Functions.
  • Případně můžete vytvořit vazbu funkce Azure Functions ke kontejneru Azure Cosmos DB pomocí vstupní vazby. Vstupní vazby čtou data z kontejneru při spuštění funkce.
  • Vytvořte vazbu funkce ke kontejneru Azure Cosmos DB pomocí výstupní vazby. Výstupní vazby zapisují data do kontejneru po dokončení funkce.

Poznámka

V současné době se pro použití s rozhraním API pro NoSQL podporují Azure Functions aktivační události, vstupní a výstupní vazby pro službu Azure Cosmos DB. U všech ostatních rozhraní API služby Azure Cosmos DB byste měli přistupovat k databázi ze své funkce pomocí statického klienta pro vaše rozhraní API.

Následující diagram znázorňuje každou z těchto tří integrací:

Integrace služby Azure Cosmos DB a Azure Functions

Aktivační událost Azure Functions, vstupní vazbu a výstupní vazbu pro službu Azure Cosmos DB je možné použít v následujících kombinacích:

  • Trigger Azure Functions pro Službu Azure Cosmos DB je možné použít s výstupní vazbou na jiný kontejner Azure Cosmos DB. Jakmile funkce provede akci s položkou v kanálu změn, můžete ji zapsat do jiného kontejneru (zápisem do stejného kontejneru, ze který pochází, by se ve skutečnosti vytvořila rekurzivní smyčka). Nebo můžete použít trigger Azure Functions služby Azure Cosmos DB k efektivní migraci všech změněných položek z jednoho kontejneru do jiného kontejneru s využitím výstupní vazby.
  • Vstupní a výstupní vazby pro službu Azure Cosmos DB je možné použít ve stejné funkci Azure Functions. To funguje dobře v případech, kdy chcete najít určitá data se vstupní vazbou, upravit je ve funkci Azure Functions a pak je po úpravě uložit do stejného nebo jiného kontejneru.
  • Vstupní vazbu na kontejner Služby Azure Cosmos DB je možné použít ve stejné funkci jako trigger Azure Functions pro službu Azure Cosmos DB a lze ji použít i s výstupní vazbou nebo bez výstupní vazby. Tuto kombinaci můžete použít k použití aktuálních informací o výměně měn (stažené se vstupní vazbou do kontejneru výměny) na kanál změn nových objednávek ve službě nákupního košíku. Aktualizovaná celková částka nákupního košíku s použitím aktuálního převodu měny se dá zapsat do třetího kontejneru pomocí výstupní vazby.

Případy použití

Následující případy použití ukazují několik způsobů, jak můžete na maximum využít data služby Azure Cosmos DB – propojením dat s Azure Functions řízenými událostmi.

Případ použití IoT – Azure Functions aktivační a výstupní vazbu pro službu Azure Cosmos DB

V implementacích IoT můžete funkci vyvolat, když se kontrolka motoru zobrazí v připojeném autě.

Provádění: Použití Azure Functions aktivační a výstupní vazby pro Azure Cosmos DB

  1. Trigger Azure Functions pro Službu Azure Cosmos DB se používá k aktivaci událostí souvisejících s upozorněními na auto, jako je například kontrolka motoru, která se rozsvítí v připojeném autě.
  2. Když se objeví kontrolka kontrolního modulu, odesílají se data ze snímačů do služby Azure Cosmos DB.
  3. Azure Cosmos DB vytvoří nebo aktualizuje nové dokumenty dat snímačů a pak se tyto změny streamují do triggeru Azure Functions pro Službu Azure Cosmos DB.
  4. Trigger se vyvolá při každé změně dat v kolekci dat senzoru, protože všechny změny se streamují prostřednictvím kanálu změn.
  5. Podmínka prahové hodnoty se ve funkci používá k odeslání dat ze senzorů záručnímu oddělení.
  6. Pokud je teplota také nad určitou hodnotou, pošle se také upozornění na vlastníka.
  7. Výstupní vazba na funkci aktualizuje záznam auta v jiném kontejneru Azure Cosmos DB tak, aby ukládaly informace o události kontrolního stroje.

Následující obrázek znázorňuje kód napsaný v Azure Portal pro tento trigger.

Vytvoření triggeru Azure Functions pro Službu Azure Cosmos DB v Azure Portal

Případ finančního použití – aktivační událost časovače a vstupní vazba

Ve finančních implementacích můžete funkci vyvolat, když zůstatek na bankovním účtu spadá pod určitou částku.

Provádění: Trigger časovače se vstupní vazbou služby Azure Cosmos DB

  1. Pomocí triggeru časovače můžete pomocí vstupní vazby načíst informace o zůstatku bankovního účtu uložené v kontejneru Azure Cosmos DB v časových intervalech.
  2. Pokud je zůstatek nižší než nízká prahová hodnota zůstatku nastavená uživatelem, postupujte podle akce ve službě Azure Functions.
  3. Výstupní vazbou může být integrace SendGrid , která odesílá e-maily z účtu služby na e-mailové adresy určené pro každý účet s nízkým zůstatkem.

Následující obrázky znázorňují kód v Azure Portal pro tento scénář.

Index.js soubor triggeru časovače pro finanční scénář

Soubor Run.csx pro trigger časovače pro finanční scénář

Případ použití her – Azure Functions aktivační a výstupní vazbu pro Službu Azure Cosmos DB

Když se při hraní her vytvoří nový uživatel, můžete pomocí služby Azure Cosmos DB for Gremlin vyhledat další uživatele, kteří ho znají. Výsledky pak můžete zapsat do databáze Azure Cosmos DB nebo SQL pro snadné načtení.

Provádění: Použití Azure Functions aktivační a výstupní vazby pro Azure Cosmos DB

  1. Pomocí grafové databáze Azure Cosmos DB k uložení všech uživatelů můžete vytvořit novou funkci s triggerem Azure Functions pro Službu Azure Cosmos DB.
  2. Při každém vložení nového uživatele se vyvolá funkce a výsledek se uloží pomocí výstupní vazby.
  3. Funkce se dotazuje na grafovou databázi, aby vyhledala všechny uživatele, kteří s novým uživatelem přímo souvisejí, a vrátí danou datovou sadu do funkce.
  4. Tato data jsou pak uložena ve službě Azure Cosmos DB, kterou pak může snadno načíst libovolná front-endová aplikace, která novému uživateli zobrazí jeho připojené přátele.

Případ použití v maloobchodě – více funkcí

Když uživatel v maloobchodní implementaci přidá položku do košíku, máte teď možnost vytvářet a vyvolávat funkce pro volitelné komponenty obchodního kanálu.

Provádění: Více aktivačních událostí Azure Functions pro Službu Azure Cosmos DB, která naslouchá jednomu kontejneru

  1. Můžete vytvořit více Azure Functions přidáním triggerů Azure Functions pro službu Azure Cosmos DB do každého z nich – všechny naslouchají stejnému kanálu změn dat nákupního košíku. Když více funkcí naslouchá stejnému kanálu změn, je pro každou funkci vyžadována nová kolekce zapůjčení. Další informace o kolekcích zapůjčení najdete v tématu Principy knihovny procesoru kanálu změn.
  2. Kdykoli se do nákupního košíku uživatelů přidá nová položka, každá funkce je nezávisle vyvolána kanálem změn z kontejneru nákupního košíku.
    • Jedna funkce může obsah aktuálního košíku použít ke změně zobrazení dalších položek, které by uživatele mohly zajímat.

    • Součty inventáře může aktualizovat jiná funkce.

    • Jiná funkce může odesílat informace o zákaznících pro určité produkty marketingovému oddělení, které jim pošle propagační e-mailovou adresu.

      Libovolné oddělení může vytvořit Azure Functions pro Službu Azure Cosmos DB nasloucháním kanálu změn a ujistěte se, že nezpozdí důležité události zpracování objednávek v procesu.

Vzhledem k tomu, že ve všech těchto případech použití funkce oddělila samotnou aplikaci, nemusíte neustále sjíždět nové instance aplikací. Místo toho Azure Functions podle potřeby roztáčí jednotlivé funkce k dokončení diskrétních procesů.

Nástroje

Nativní integrace mezi službou Azure Cosmos DB a Azure Functions je k dispozici v Azure Portal a v sadě Visual Studio.

Proč zvolit integraci Azure Functions pro bezserverovou architekturu?

Azure Functions poskytuje možnost vytvářet škálovatelné jednotky práce nebo stručné části logiky, které lze spustit na vyžádání, bez zřizování nebo správy infrastruktury. Pomocí Azure Functions nemusíte vytvářet plnohodnotnou aplikaci, abyste mohli reagovat na změny v databázi Azure Cosmos DB. Můžete vytvořit malé opakovaně použitelné funkce pro konkrétní úlohy. Kromě toho můžete data služby Azure Cosmos DB použít také jako vstup nebo výstup funkce Azure Functions v reakci na událost, jako jsou požadavky HTTP nebo časovaná aktivační událost.

Azure Cosmos DB je doporučená databáze pro architekturu bezserverové architektury z následujících důvodů:

  • Okamžitý přístup ke všem vašim datům: Ke každé uložené hodnotě máte podrobný přístup, protože Azure Cosmos DB automaticky indexuje všechna data ve výchozím nastavení a tyto indexy okamžitě zpřístupní. To znamená, že můžete neustále dotazovat, aktualizovat a přidávat nové položky do databáze a mít okamžitý přístup prostřednictvím Azure Functions.

  • Bez schématu. Azure Cosmos DB je bez schématu, takže je jedinečně schopná zpracovat jakýkoli výstup dat z funkce Azure Functions. Tento přístup "zpracovat cokoli" usnadňuje vytváření různých funkcí, které jsou výstupem do služby Azure Cosmos DB.

  • Škálovatelná propustnost. Propustnost je možné ve službě Azure Cosmos DB okamžitě vertikálně navýšit nebo snížit. Pokud máte stovky nebo tisíce funkcí, které se dotazují a zapisují do stejného kontejneru, můžete vertikálně navýšit kapacitu RU/s , abyste zatížení zvládli. Všechny funkce můžou pracovat paralelně s využitím přidělených RU/s a vaše data jsou zaručeně konzistentní.

  • Globální replikace. Data služby Azure Cosmos DB můžete replikovat po celém světě , abyste snížili latenci a geograficky nalokalizujte data co nejblíže k místu, kde se nacházejí vaši uživatelé. Stejně jako u všech dotazů Azure Cosmos DB se data z aktivačních událostí řízených událostmi načítají ze služby Azure Cosmos DB, která je nejblíže uživateli.

Pokud hledáte integraci s Azure Functions pro ukládání dat a nepotřebujete hloubkové indexování nebo pokud potřebujete ukládat přílohy a multimediální soubory, může být lepší volbou aktivační událost Azure Blob Storage.

Výhody Azure Functions:

  • Řízené událostmi. Azure Functions je řízená událostmi a může naslouchat kanálu změn ze služby Azure Cosmos DB. To znamená, že nemusíte vytvářet logiku naslouchání, stačí mít přehled o změnách, které posloucháte.

  • Bez omezení. Funkce se spouští paralelně a služba se spustí tolik, kolik potřebujete. Nastavíte parametry.

  • Vhodné pro rychlé úkoly. Služba aktivuje nové instance funkcí vždy, když se aktivuje událost, a zavře je, jakmile se funkce dokončí. Platíte jenom za dobu, po kterou vaše funkce běží.

Pokud si nejste jistí, jestli jsou pro vaši implementaci nejvhodnější Flow, Logic Apps, Azure Functions nebo WebJobs, přečtěte si téma Volba mezi službami Flow, Logic Apps, Functions a WebJobs.

Další kroky

Teď propojíme Službu Azure Cosmos DB a Azure Functions v reálném čase: