Sdílet prostřednictvím


Bezserverová databáze s využitím Azure Cosmos DB a Azure Functions

PLATÍ PRO: NoSQL

Bezserverová architektura se zaměřuje na jednotlivé části logiky, které jsou opakovatelné a bezstavové. Tyto části nevyžadují žádnou správu infrastruktury a spotřebovávají prostředky pouze za sekundy nebo milisekundy, pro které běží. Jádrem pohybu bezserverových výpočtů jsou funkce, které jsou dostupné v ekosystému Azure pomocí Azure Functions. Další informace o jiných bezserverových spouštěcích prostředích v Azure najdete na stránce Bezserverové prostředí Azure .

Díky nativní integraci mezi 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 nízkou latencí přístup 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 k monitorování změn v kontejneru Azure Cosmos DB. Když v kontejneru dojde k nějakým změnám, stream kanálu změn se odešle do triggeru, který vyvolá funkci Azure Functions.
  • Alternativně vytvořte vazbu funkce Azure Functions k kontejneru Azure Cosmos DB pomocí vstupní vazby. Vstupní vazby čtou data z kontejneru při spuštění funkce.
  • Vytvoření vazby funkce k 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 podporuje trigger Služby Azure Functions, vstupní vazby a výstupní vazby pro službu Azure Cosmos DB. Pro všechna ostatní rozhraní API služby Azure Cosmos DB byste měli přistupovat k databázi z vaší 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

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

  • Trigger služby Azure Functions pro službu Azure Cosmos DB se dá 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 napsat do jiného kontejneru (zápis do stejného kontejneru, ze kterém pochází, by efektivně vytvořil rekurzivní smyčku). Nebo můžete pomocí triggeru Azure Functions pro službu Azure Cosmos DB efektivně migrovat všechny změněné položky z jednoho kontejneru do jiného kontejneru pomocí výstupní vazby.
  • Vstupní vazby 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 potom je po úpravě uložit do stejného kontejneru nebo jiného kontejneru.
  • Vstupní vazbu ke kontejneru Azure Cosmos DB je možné použít ve stejné funkci jako trigger Služby Azure Functions pro službu Azure Cosmos DB a dá se použít i s výstupní vazbou nebo bez této vazby. Tuto kombinaci můžete použít k použití aktuálních informací o výměně měn (s vstupní vazbou ke kontejneru výměny) na kanál změn nových objednávek ve službě nákupního košíku. Aktualizovaný součet nákupního košíku s použitým aktuálním převodem měny lze 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 maximálně využít data Azure Cosmos DB – připojením dat k Azure Functions řízeným událostmi.

Případ použití IoT – Trigger a výstupní vazba Azure Functions pro Azure Cosmos DB

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

Implementace: Použití triggeru a výstupní vazby Azure Functions pro službu Azure Cosmos DB

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

Následující obrázek ukazuje kód napsaný na webu Azure Portal pro tento trigger.

Vytvoření triggeru Azure Functions pro službu Azure Cosmos DB na webu Azure Portal

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

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

Implementace: 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ž prahová hodnota nízkého zůstatku nastavená uživatelem, postupujte podle akce funkce Azure Functions.
  3. Výstupní vazbou může být integrace SendGridu, která odesílá e-mail z účtu služby na e-mailové adresy identifikované pro každý z účtů s nízkým zůstatkem.

Následující obrázky znázorňují kód na webu 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 – Trigger a výstupní vazba Azure Functions pro službu Azure Cosmos DB

Při vytváření nového uživatele ve hraní her můžete vyhledat další uživatele, kteří je můžou znát pomocí služby Azure Cosmos DB pro Gremlin. Výsledky pak můžete zapsat do databáze Azure Cosmos DB nebo SQL, abyste je mohli snadno načíst.

Implementace: Použití triggeru a výstupní vazby Azure Functions pro službu Azure Cosmos DB

  1. Pomocí grafové databáze Azure Cosmos DB pro ukládání 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 funkce vyvolá a výsledek se uloží pomocí výstupní vazby.
  3. Funkce se dotazuje grafové databáze, aby vyhledaly všechny uživatele, kteří přímo souvisejí s novým uživatelem, a vrátí danou datovou sadu do funkce.
  4. Tato data se pak ukládají ve službě Azure Cosmos DB, kterou pak může snadno načíst libovolná front-endová aplikace, která zobrazuje nového uživatele, kterého připojili přátelé.

Případ použití maloobchodního prodeje – více funkcí

Když uživatel v maloobchodní implementaci přidá položku do košíku, máte teď flexibilitu vytvářet a volat funkce pro volitelné součásti obchodního kanálu.

Implementace: Několik triggerů Azure Functions pro službu Azure Cosmos DB naslouchání jednomu kontejneru

  1. Několik funkcí Azure Functions můžete vytvořit tak, že do každé služby Azure Cosmos DB přidáte triggery Azure Functions – všechny naslouchají stejnému kanálu změn dat nákupního košíku. Když několik 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 Procesor kanálu změn.
  2. Při každém přidání nové položky do nákupního košíku uživatelů je každá funkce vyvolána informačním 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 mohl uživatel zajímat.

    • Jiná funkce může aktualizovat celkové součty inventáře.

    • Další funkce může poslat informace o zákaznících pro určité produkty marketingovému oddělení, které jim pošle propagační poštovní schránku.

      Jakékoli oddělení může vytvořit službu Azure Functions pro službu Azure Cosmos DB nasloucháním kanálu změn a ujistěte se, že nezpozdí události zpracování kritického pořadí v procesu.

Ve všech těchto případech použití, protože funkce oddělila samotnou aplikaci, nemusíte neustále vytvářet nové instance aplikací. Místo toho azure Functions podle potřeby roztáčí jednotlivé funkce, aby se dokončily diskrétní procesy.

Nástroje

Nativní integrace mezi Azure Cosmos DB a Azure Functions je dostupná na webu 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é je možné spouštět na vyžádání bez zřizování nebo správy infrastruktury. Pomocí Azure Functions nemusíte vytvářet plnohodnotnou aplikaci, která by reagovala 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 jako vstup nebo výstup funkce Azure Functions použít také data Azure Cosmos DB v reakci na události, 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 datům: Máte podrobný přístup ke každé uložené hodnotě, protože Azure Cosmos DB automaticky indexuje všechna data ve výchozím nastavení a tyto indexy zpřístupní okamžitě. To znamená, že můžete do databáze neustále dotazovat, aktualizovat a přidávat nové položky a mít okamžitý přístup přes 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 vytvoření různých funkcí, které všechny výstupy do služby Azure Cosmos DB.

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

  • Globální replikace Data Služby Azure Cosmos DB můžete replikovat po celém světě , abyste snížili latenci a geograficky lokalizovat data nejblíže místu, kde jsou vaši uživatelé. Stejně jako u všech dotazů Azure Cosmos DB se data z triggerů řízených událostmi čtou data ze služby Azure Cosmos DB nejblíže uživateli.

Pokud chcete integrovat se službou Azure Functions pro ukládání dat a nepotřebujete hloubkové indexování nebo pokud potřebujete ukládat přílohy a mediální soubory, může být trigger služby Azure Blob Storage lepší volbou.

Výhody Azure Functions:

  • Řízené událostmi. Služba 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, na které nasloucháte.

  • Žádné limity. Funkce se spouští paralelně a služba se roztáčí podle potřeby. Nastavíte parametry.

  • Dobré pro rychlé úkoly. Služba spustí nové instance funkcí při každém spuštění události a zavře je hned po dokončení funkce. Platíte jenom za dobu, kdy jsou funkce spuštěné.

Pokud si nejste jistí, jestli je pro vaši implementaci nejvhodnější Flow, Logic Apps, Azure Functions nebo WebJobs, přečtěte si téma Výběr mezi toky, Logic Apps, Functions a WebJobs.

Další kroky

Teď propojíme Azure Cosmos DB a Azure Functions pro reálné účely: