Minimal lagring – ändra flöde för att replikera data

Azure Front Door
Azure App Service
Azure Functions
Azure Cosmos DB
Azure Table Storage

Den här artikeln visar en lösning med hög tillgänglighet för ett webbprogram som använder enorma mängder data som måste vara tillgängliga under en viss tidsperiod. Den lagrar data i Azure Cosmos DB och använder Azure Cosmos DB-ändringsflödet för att replikera data till sekundär lagring. När den angivna tidsperioden har gått används Azure Functions för att ta bort data från Azure Cosmos DB.

Arkitektur

Arkitektur för ett motståndskraftigt system som använder två typer av lagring för att minska kostnaderna.

Ladda ned en Visio-fil med den här arkitekturen.

Dataflöde

  1. Klienten autentiserar med Microsoft Entra-ID och beviljas åtkomst till webbprogram som finns i Azure App Service.
  2. Azure Front Door, en brandvägg och layer-7-lastbalanserare, växlar användartrafik till väntelägesregionen om det uppstår ett regionalt avbrott.
  3. App Service är värd för webbplatser och RESTful-webb-API:er. Webbläsarklienter kör AJAX-program som använder API:erna.
  4. Webb-API:er delegerar ansvaret för kod som hanteras av Functions för att hantera bakgrundsaktiviteter. Uppgifterna köas i Azure Queue Storage-köer.
  5. De köade meddelandena utlöser funktionerna, som utför bakgrundsuppgifterna.
  6. Azure Cache for Redis cachelagrar databasdata för funktionerna. Med hjälp av cachen avlastar lösningen databasaktiviteten och påskyndar funktionsapparna och webbapparna.
  7. Azure Cosmos DB innehåller nyligen genererade data.
  8. Azure Cosmos DB utfärdar en ändringsfeed som kan användas för att replikera ändringar.
  9. En funktionsapp läser ändringsflödet och replikerar ändringarna till Azure Table Storage-tabeller. En annan funktionsapp tar regelbundet bort utgångna data från Azure Cosmos DB.
  10. Table Storage tillhandahåller lagring till låg kostnad.

Komponenter

  • Azure Microsoft Entra ID är en identitets- och åtkomsthanteringstjänst för flera klientorganisationer som kan synkroniseras med en lokal katalog.
  • Azure DNS är en värdtjänst med hög tillgänglighet för DNS-domäner som ger appar snabba DNS-frågor och snabba uppdateringar av DNS-poster. Att hantera Azure DNS är som att hantera andra Azure-tjänster och använder samma autentiseringsuppgifter, API:er, verktyg och fakturering.
  • Azure Front Door är ett säkert nätverk för innehållsleverans (CDN) och lastbalanserare med omedelbar redundans. Det fungerar på gränsen nära användare, påskyndar innehållsleveransen samtidigt som appar, API:er och webbplatser skyddas från cyberhot.
  • App Service är en fullständigt hanterad tjänst för att skapa, distribuera och skala webbappar. Du kan skapa appar med hjälp av .NET, .NET Core, Node.js, Java, Python eller PHP. Appar kan köras i containrar eller i Windows eller Linux. I en stordatormigrering kan klientdelsskärmarna eller webbgränssnittet kodas som HTTP-baserade REST-API:er. De kan separeras och kan vara tillståndslösa för att orkestrera ett mikrotjänstbaserat system. Mer information om webb-API:er finns i DESIGN av RESTful-webb-API.
  • Functions tillhandahåller en miljö för att köra små delar av kod, som kallas funktioner, utan att behöva upprätta en programinfrastruktur. Du kan använda den för att bearbeta massdata, integrera system, arbeta med IoT-enheter (Internet of Things) och skapa enkla API:er och mikrotjänster. Med mikrotjänster kan du skapa servrar som ansluter till Azure-tjänster och alltid är uppdaterade.
  • Azure Storage är en uppsättning massivt skalbara och säkra molntjänster för data, appar och arbetsbelastningar. Den innehåller Azure Files, Table Storage och Queue Storage. Azure Files är ofta ett effektivt verktyg för att migrera stordatorarbetsbelastningar.
  • Queue Storage tillhandahåller enkel, kostnadseffektiv, varaktig meddelandekö för stora arbetsbelastningar.
  • Table Storage är ett Nyckelvärdeslager för NoSQL för snabb utveckling som använder massiva halvstrukturerade datamängder. Tabellerna är schemalösa och anpassas enkelt när behoven ändras. Åtkomsten är snabb och kostnadseffektiv för många typer av program och kostar vanligtvis mindre än andra typer av nyckellagring.
  • Azure Cache for Redis är en fullständigt hanterad minnesintern cachelagringstjänst och meddelandekö för att dela data och tillstånd mellan beräkningsresurser. Den innehåller både Redis med öppen källkod och en kommersiell produkt från Redis Labs som hanterade tjänster. Du kan förbättra prestandan för onlinetransaktionsbearbetningsprogram med högt dataflöde genom att utforma dem för att skala och använda ett minnesinternt datalager, till exempel Azure Cache for Redis.
  • Azure Cosmos DB är en globalt distribuerad databas med flera modeller från Microsoft som gör det möjligt för dina lösningar att elastiskt och oberoende skala dataflöde och lagring i valfritt antal geografiska regioner. Den erbjuder garantier för dataflöde, svarstid, tillgänglighet och konsekvens med omfattande serviceavtal (SLA).

Alternativ

  • Azure Traffic Manager dirigerar inkommande DNS-begäranden i de globala Azure-regionerna baserat på ditt val av trafikroutningsmetoder. Det ger också automatisk redundans och prestandadirigering.
  • Azure Content Delivery Network cachelagrar statiskt innehåll i gränsservrar för snabb respons och använder nätverksoptimeringar för att förbättra svaret på dynamiskt innehåll. Content Delivery Network är särskilt användbart när användarbasen är global.
  • Azure Kubernetes Service (AKS) är en fullständigt hanterad Kubernetes-tjänst för att distribuera och hantera containerbaserade program. Du kan använda den för att implementera en mikrotjänstarkitektur vars komponenter skalas oberoende på begäran.
  • Azure Container Instances är ett snabbt och enkelt sätt att köra uppgifter utan att behöva hantera infrastrukturen. Det är användbart under utvecklingen eller för att köra oplanerade uppgifter.
  • Azure Service Bus är en tillförlitlig molnmeddelandetjänst för enkel hybridintegrering. Den kan användas i stället för Queue Storage i den här arkitekturen. Mer information finns i Lagringsköer och Service Bus-köer – jämförs och kontrasteras.

Information om scenario

Den här lösningen använder Azure Cosmos DB för att lagra den stora mängden data som webbprogrammet använder. Webbappar som hanterar enorma mängder data drar nytta av möjligheten för Azure Cosmos DB att elastiskt och oberoende skala dataflöde och lagring.

En annan viktig lösningskomponent är Azure Cosmos DB-ändringsflödet. När ändringar görs i databasen skickas ändringsflödesströmmen till en händelsedriven Functions-utlösare. En funktion kör och replikerar sedan ändringarna till Tabelllagringstabeller, som tillhandahåller en lagringslösning till låg kostnad.

Webbappen behöver bara data under en begränsad tid. Lösningen utnyttjar detta faktum för att ytterligare minska kostnaderna. Mer specifikt kör och tar en annan funktion regelbundet bort utgångna data från Azure Cosmos DB. Förutom att utlösas kan funktioner också schemaläggas att köras vid angivna tider.

Potentiella användningsfall

Arkitekturen är lämplig för alla program som:

  • Använder en enorm mängd data.
  • Kräver att data alltid är tillgängliga när de behövs.
  • Använder data som upphör att gälla.

Exempel är appar som:

  • Spåra kundernas utgiftsvanor och shoppingbeteende.
  • Prognostiserat väder.
  • Erbjud smarta trafiksystem eller implementera smarta trafiksystem eller använd smart teknik för att övervaka trafiken.
  • Analysera IoT-tillverkningsdata.
  • Visa smart mätardata eller använd smart teknik för att övervaka mätardata.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

  • När du implementerar och underhåller den här lösningen medför du extra kostnader.
  • Att använda ändringsflödet för replikering kräver mindre kodunderhåll än att utföra replikeringen i kärnprogrammet.
  • Du måste migrera befintliga data. Migreringsprocessen kräver ad hoc-skript eller rutiner för att kopiera gamla data till lagringskonton. När du migrerar data kontrollerar du att du använder tidsstämplar och kopierar flaggor för att spåra migreringsstatus.
  • Undvik att ta bort poster från den sekundära Azure Table-lagringen genom att ignorera borttagningsflöden som genereras när dina funktioner tar bort poster från Azure Cosmos DB.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudförfattare:

  • Nabil Siddiqui | Molnlösningsarkitekt – Digital innovation och programinnovation

Nästa steg