Delen via


Serverloze databasecomputing met behulp van Azure Cosmos DB en Azure Functions

VAN TOEPASSING OP: NoSQL

Serverloze computing draait allemaal om de mogelijkheid om zich te richten op afzonderlijke onderdelen van logica die herhaalbaar en staatloos zijn. Voor deze onderdelen is geen infrastructuurbeheer vereist en ze verbruiken alleen gedurende de seconden, of milliseconden, waarvoor ze worden uitgevoerd. De kern van de serverloze computingverplaatsing zijn functies die beschikbaar worden gesteld in het Azure-ecosysteem door Azure Functions. Zie serverloze azure-pagina voor meer informatie over andere serverloze uitvoeringsomgevingen in Azure.

Met de systeemeigen integratie tussen Azure Cosmos DB en Azure Functions kunt u databasetriggers, invoerbindingen en uitvoerbindingen rechtstreeks vanuit uw Azure Cosmos DB-account maken. Met Behulp van Azure Functions en Azure Cosmos DB kunt u serverloze apps met lage latentie maken en implementeren voor uitgebreide gegevens voor een globale gebruikersbasis.

Overzicht

Met Azure Cosmos DB en Azure Functions kunt u uw databases en serverloze apps op de volgende manieren integreren:

  • Maak een gebeurtenisgestuurde Azure Functions-trigger voor Azure Cosmos DB. Deze trigger is afhankelijk van wijzigingenfeedstreams om uw Azure Cosmos DB-container te controleren op wijzigingen. Wanneer er wijzigingen worden aangebracht in een container, wordt de stroom van de wijzigingenfeed verzonden naar de trigger, die de Azure-functie aanroept.
  • U kunt ook een Azure-functie verbinden met een Azure Cosmos DB-container met behulp van een invoerbinding. Invoerbindingen lezen gegevens uit een container wanneer een functie wordt uitgevoerd.
  • Bind een functie aan een Azure Cosmos DB-container met behulp van een uitvoerbinding. Uitvoerbindingen schrijven gegevens naar een container wanneer een functie is voltooid.

Notitie

Momenteel worden azure Functions-triggers, invoerbindingen en uitvoerbindingen voor Azure Cosmos DB alleen ondersteund voor gebruik met de API voor NoSQL. Voor alle andere Azure Cosmos DB-API's hebt u toegang tot de database vanuit uw functie met behulp van de statische client voor uw API.

In het volgende diagram ziet u elk van deze drie integraties:

Hoe Azure Cosmos DB en Azure Functions integreren

De Azure Functions-trigger, invoerbinding en uitvoerbinding voor Azure Cosmos DB kunnen worden gebruikt in de volgende combinaties:

  • Een Azure Functions-trigger voor Azure Cosmos DB kan worden gebruikt met een uitvoerbinding naar een andere Azure Cosmos DB-container. Nadat een functie een actie uitvoert op een item in de wijzigingenfeed, kunt u het naar een andere container schrijven (door deze naar dezelfde container te schrijven waaruit een recursieve lus is ontstaan). U kunt ook een Azure Functions-trigger voor Azure Cosmos DB gebruiken om alle gewijzigde items van de ene container naar een andere container effectief te migreren, met behulp van een uitvoerbinding.
  • Invoerbindingen en uitvoerbindingen voor Azure Cosmos DB kunnen worden gebruikt in dezelfde Azure-functie. Dit werkt goed in gevallen waarin u bepaalde gegevens met de invoerbinding wilt vinden, deze wilt wijzigen in de Azure-functie en deze vervolgens wilt opslaan in dezelfde container of een andere container, na de wijziging.
  • Een invoerbinding met een Azure Cosmos DB-container kan worden gebruikt in dezelfde functie als een Azure Functions-trigger voor Azure Cosmos DB en kan ook worden gebruikt met of zonder uitvoerbinding. U kunt deze combinatie gebruiken om actuele informatie over valutauitwisseling toe te passen (opgehaald met een invoerbinding voor een exchange-container) op de wijzigingenfeed van nieuwe orders in uw winkelwagenservice. Het bijgewerkte winkelwagentotaal, waarbij de huidige valutaconversie is toegepast, kan worden geschreven naar een derde container met behulp van een uitvoerbinding.

Gebruiksgevallen

In de volgende gebruiksvoorbeelden ziet u een aantal manieren waarop u optimaal gebruik kunt maken van uw Azure Cosmos DB-gegevens door uw gegevens te verbinden met gebeurtenisgestuurde Azure Functions.

IoT-use case : Azure Functions-trigger- en uitvoerbinding voor Azure Cosmos DB

In IoT-implementaties kunt u een functie aanroepen wanneer het motorlicht wordt weergegeven in een verbonden auto.

Implementatie: Een Azure Functions-trigger en uitvoerbinding gebruiken voor Azure Cosmos DB

  1. Een Azure Functions-trigger voor Azure Cosmos DB wordt gebruikt om gebeurtenissen te activeren die betrekking hebben op autowaarschuwingen, zoals het controle-motorlampje dat in een verbonden auto binnenkomt.
  2. Wanneer het controle-enginelicht verschijnt, worden de sensorgegevens verzonden naar Azure Cosmos DB.
  3. In Azure Cosmos DB worden nieuwe documenten voor sensorgegevens gemaakt of bijgewerkt. Deze wijzigingen worden vervolgens gestreamd naar de Azure Functions-trigger voor Azure Cosmos DB.
  4. De trigger wordt aangeroepen bij elke gegevenswijziging in de sensorgegevensverzameling, omdat alle wijzigingen worden gestreamd via de wijzigingenfeed.
  5. In de functie wordt een drempelwaardevoorwaarde gebruikt om de sensorgegevens naar de garantieafdeling te verzenden.
  6. Als de temperatuur ook hoger is dan een bepaalde waarde, wordt er ook een waarschuwing naar de eigenaar verzonden.
  7. De uitvoerbinding voor de functie werkt de autorecord in een andere Azure Cosmos DB-container bij om informatie over de controle-engine-gebeurtenis op te slaan.

In de volgende afbeelding ziet u de code die is geschreven in Azure Portal voor deze trigger.

Een Azure Functions-trigger maken voor Azure Cosmos DB in Azure Portal

Financiële use case - Timertrigger en invoerbinding

In financiële implementaties kunt u een functie aanroepen wanneer een bankrekeningsaldo onder een bepaald bedrag valt.

Implementatie: Een timertrigger met een Azure Cosmos DB-invoerbinding

  1. Met behulp van een timertrigger kunt u de bankrekeningsaldogegevens ophalen die zijn opgeslagen in een Azure Cosmos DB-container met tijdsintervallen met behulp van een invoerbinding.
  2. Als het saldo lager is dan de drempelwaarde voor een laag saldo dat door de gebruiker is ingesteld, voert u een actie van de Azure-functie uit.
  3. De uitvoerbinding kan een SendGrid-integratie zijn waarmee een e-mail van een serviceaccount wordt verzonden naar de e-mailadressen die zijn geïdentificeerd voor elk van de accounts met een laag saldo.

In de volgende afbeeldingen ziet u de code in Azure Portal voor dit scenario.

Index.js bestand voor een timertrigger voor een financieel scenario

Run.csx-bestand voor een timertrigger voor een financieel scenario

Use case voor gaming: Azure Functions-trigger- en uitvoerbinding voor Azure Cosmos DB

Wanneer er een nieuwe gebruiker wordt gemaakt, kunt u in gaming zoeken naar andere gebruikers die ze misschien kennen met behulp van De Azure Cosmos DB voor Gremlin. U kunt de resultaten vervolgens naar een Azure Cosmos DB- of SQL-database schrijven om ze eenvoudig op te halen.

Implementatie: Een Azure Functions-trigger en uitvoerbinding gebruiken voor Azure Cosmos DB

  1. Met behulp van een Azure Cosmos DB-grafiekdatabase voor het opslaan van alle gebruikers kunt u een nieuwe functie maken met een Azure Functions-trigger voor Azure Cosmos DB.
  2. Wanneer een nieuwe gebruiker wordt ingevoegd, wordt de functie aangeroepen en wordt het resultaat opgeslagen met behulp van een uitvoerbinding.
  3. Met de functie wordt een query uitgevoerd op de grafiekdatabase om te zoeken naar alle gebruikers die rechtstreeks zijn gerelateerd aan de nieuwe gebruiker en die gegevensset wordt geretourneerd aan de functie.
  4. Deze gegevens worden vervolgens opgeslagen in Azure Cosmos DB, die vervolgens eenvoudig kunnen worden opgehaald door elke front-endtoepassing waarin de nieuwe gebruiker zijn verbonden vrienden wordt weergegeven.

Retail use case - Meerdere functies

Wanneer een gebruiker in retail-implementaties een item toevoegt aan zijn winkelwagen, beschikt u nu over de flexibiliteit om functies te maken en aan te roepen voor optionele onderdelen van bedrijfspijplijnen.

Implementatie: Meerdere Azure Functions-triggers voor Azure Cosmos DB die naar één container luisteren

  1. U kunt meerdere Azure Functions maken door Azure Functions-triggers voor Azure Cosmos DB toe te voegen aan elk, die allemaal luisteren naar dezelfde wijzigingenfeed met winkelwagengegevens. Wanneer meerdere functies naar dezelfde wijzigingenfeed luisteren, is een nieuwe leaseverzameling vereist voor elke functie. Zie Informatie over de processorbibliotheek voor wijzigingenfeeds voor meer informatie over leaseverzamelingen.
  2. Wanneer een nieuw item wordt toegevoegd aan een winkelwagen van gebruikers, wordt elke functie onafhankelijk aangeroepen door de wijzigingsfeed van de winkelwagencontainer.
    • De ene functie kan de inhoud van het huidige mandje gebruiken om de weergave van andere items te wijzigen waarin de gebruiker mogelijk geïnteresseerd is.

    • Een andere functie kan voorraadtotalen bijwerken.

    • Een andere functie kan klantgegevens voor bepaalde producten verzenden naar de marketingafdeling, die hen een promotiemailer stuurt.

      Elke afdeling kan een Azure Functions voor Azure Cosmos DB maken door naar de wijzigingenfeed te luisteren en ervoor te zorgen dat deze geen kritieke orderverwerkingsevenementen in het proces vertragen.

In al deze gebruiksscenario's hoeft u geen nieuwe app-exemplaren meer te maken, omdat de functie de app zelf heeft losgekoppeld. In plaats daarvan draait Azure Functions afzonderlijke functies om naar behoefte afzonderlijke processen te voltooien.

Hulpprogramma's

Systeemeigen integratie tussen Azure Cosmos DB en Azure Functions is beschikbaar in Azure Portal en in Visual Studio.

Waarom azure Functions-integratie kiezen voor serverloze computing?

Azure Functions biedt de mogelijkheid om schaalbare werkeenheden of beknopte stukjes logica te maken die op aanvraag kunnen worden uitgevoerd, zonder infrastructuur in te richten of te beheren. Met Behulp van Azure Functions hoeft u geen volledige app te maken om te reageren op wijzigingen in uw Azure Cosmos DB-database. U kunt kleine herbruikbare functies maken voor specifieke taken. Daarnaast kunt u Azure Cosmos DB-gegevens ook gebruiken als invoer of uitvoer voor een Azure-functie als reactie op gebeurtenissen zoals een HTTP-aanvragen of een getimede trigger.

Azure Cosmos DB is om de volgende redenen de aanbevolen database voor uw serverloze computingarchitectuur:

  • Directe toegang tot al uw gegevens: u hebt gedetailleerde toegang tot elke waarde die is opgeslagen, omdat Azure Cosmos DB standaard alle gegevens automatisch indexeert en deze indexen onmiddellijk beschikbaar maakt. Dit betekent dat u voortdurend nieuwe items kunt opvragen, bijwerken en toevoegen aan uw database en direct toegang hebt via Azure Functions.

  • Schemaloos. Azure Cosmos DB is schemaloos, dus het is uniek in staat om gegevensuitvoer van een Azure-functie te verwerken. Deze benadering voor het afhandelen van alles maakt het eenvoudig om verschillende functies te maken die alle uitvoer naar Azure Cosmos DB hebben.

  • Schaalbare doorvoer. Doorvoer kan direct omhoog en omlaag worden geschaald in Azure Cosmos DB. Als u honderden of duizenden functies hebt die query's uitvoeren en schrijven naar dezelfde container, kunt u uw RU/s omhoog schalen om de belasting te verwerken. Alle functies kunnen parallel werken met behulp van uw toegewezen RU/s en uw gegevens zijn gegarandeerd consistent.

  • Globale replicatie. U kunt Azure Cosmos DB-gegevens over de hele wereld repliceren om latentie te verminderen, zodat uw gegevens zich het dichtst bij uw gebruikers bevinden. Net als bij alle Azure Cosmos DB-query's worden gegevens van gebeurtenisgestuurde triggers gelezen uit de Azure Cosmos DB die zich het dichtst bij de gebruiker bevinden.

Als u wilt integreren met Azure Functions om gegevens op te slaan en geen grondige indexering nodig hebt of als u bijlagen en mediabestanden wilt opslaan, is de Azure Blob Storage-trigger mogelijk een betere optie.

Voordelen van Azure Functions:

  • Gebeurtenisgestuurd. Azure Functions is gebeurtenisgestuurd en kan luisteren naar een wijzigingenfeed van Azure Cosmos DB. Dit betekent dat u geen luisterlogica hoeft te maken, u hoeft alleen de wijzigingen die u luistert, in de gaten te houden.

  • Geen limieten. Functies worden parallel uitgevoerd en de service draait net zo veel als u nodig hebt. U stelt de parameters in.

  • Geschikt voor snelle taken. De service draait nieuwe exemplaren van functies op wanneer een gebeurtenis wordt geactiveerd en sluit deze zodra de functie is voltooid. U betaalt alleen voor de tijd dat uw functies worden uitgevoerd.

Als u niet zeker weet of Flow, Logic Apps, Azure Functions of WebJobs het meest geschikt zijn voor uw implementatie, raadpleegt u Kiezen tussen Flow, Logic Apps, Functions en WebJobs.

Volgende stappen

Nu gaan we Azure Cosmos DB en Azure Functions verbinden voor echt: