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 hanterar stora mängder data som måste vara tillgängliga inom en viss tidsram. Lösningen använder Azure Cosmos DB som primärt datalager och använder Azure Cosmos DB ändringsflöde för att replikera data till sekundär lagring till låg kostnad. Efter den angivna tidsperioden använder lösningen Azure Functions för att ta bort data från Azure Cosmos DB. Data i sekundär lagring är längre tillgängliga för granskning och analys av andra lösningar. Lösningen replikerar data till olika datatjänster, vilket ger hög hållbarhet.

Arkitektur

Diagram som visar den minimala lagringsarkitekturen.

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

Dataflöde

Följande dataflöde motsvarar föregående diagram:

  1. Klienten autentiserar med hjälp av Microsoft Entra ID och beviljas åtkomst till webbprogram som finns på Azure App Service.

  2. Azure Front Door, som är 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 asynkrona JavaScript- och XML-program som använder API:erna.

  4. Webb-API:er överlåter ansvaret på kod som finns i Functions för att hantera bakgrundsuppgifter. Uppgifter köas i Azure Queue Storage-köer.

  5. De köade meddelandena utlöser funktionerna, som utför bakgrundsuppgifterna.

  6. Azure Managed Redis cachelagrar databasdata för funktionerna. Lösningen avlastar databasläsningar för långsamt föränderliga data och påskyndar funktionsappar och webbappar med hjälp av cacheminnet.

  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

  • Microsoft Entra ID är en tjänst för identitets- och åtkomsthantering som kan synkroniseras med en lokal katalog. I den här arkitekturen autentiserar den användare och ger åtkomst till webbprogram som finns i App Service.

  • Azure Front Door är ett säkert nätverk för innehållsleverans och lastbalanserare. I den här arkitekturen påskyndar den innehållsleveransen, ger redundansfunktioner och skyddar appar mot cyberhot.

  • App Service är en fullständigt hanterad tjänst som utvecklare använder för att skapa, distribuera, värdhantera och skala webbappar. Du kan skapa appar med hjälp av .NET, Node.js, Java, Python eller PHP. Appar kan köras i containrar eller i Windows eller Linux. I den här arkitekturen är App Service värd för webbgränssnittet och REST-API:er för programmet. 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. Du kan använda mikrotjänster för att skapa servrar som ansluter till Azure tjänster och alltid hålla dig uppdaterad. I den här arkitekturen kör Functions bakgrundsuppgifter som datareplikering och borttagning av utgångna poster.

  • Azure Storage är en uppsättning skalbara och säkra molntjänster för data, appar och arbetsbelastningar. I den här arkitekturen tillhandahåller Storage Queue Storage för uppgiftsmeddelanden och Table Storage för replikerad datalagring till låg kostnad.

    • Queue Storage tillhandahåller enkel, kostnadseffektiv, varaktig meddelandekö för stora arbetsbelastningar. Den här arkitekturen använder Queue Storage för uppgiftsmeddelanden.

    • 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 efter behov. Åtkomsten är snabb och kostnadseffektiv för många program. Den här arkitekturen använder Table Storage för att lagra en synkroniserad och omstrukturerad kopia av data i Azure Cosmos DB.

  • Azure Managed Redis är en fullständigt hanterad minnesintern cachelagringstjänst och meddelandekö för data- och tillståndsdelning mellan beräkningsresurser. För att förbättra prestandan för onlinetransaktionsbearbetningsprogram med högt dataflöde utformar du dem så att de kan skalas med hjälp av ett minnesinternt datalager, till exempel Azure Managed Redis. I den här arkitekturen påskyndar Azure Managed Redis åtkomsten till data som används ofta, vilket förbättrar prestandan för funktionsappar och webbappar.

  • Azure Cosmos DB är en globalt distribuerad databas med flera modeller som driver dina lösningar att elastiskt och oberoende skala dataflöde och lagring i valfritt antal geografiska regioner. Det ger garantier för genomströmning, svarstid, tillgänglighet och konsekvens med omfattande tjänstenivåavtal. I den här arkitekturen lagrar Azure Cosmos DB senaste data och genererar ett ändringsflöde som du kan använda för att replikera uppdateringar till Table Storage.

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 Container Apps är en fullständigt hanterad, serverlös containertjänst som utvecklare använder för att skapa och distribuera moderna appar i stor skala.

  • Azure Kubernetes Service (AKS) är en fullständigt hanterad Kubernetes-tjänst för distribution och hantering av containerbaserade program. Du kan använda den för att implementera en mikrotjänstarkitektur med komponenter som skalas separat och på begäran.

  • Azure Container Instances kör uppgifter utan att infrastrukturhantering krävs. Det är användbart under utvecklingen och 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 lagrar stora mängder webbprogramdata i Azure Cosmos DB. Webbappar som hanterar stora mängder data använder Azure Cosmos DB för att elastiskt och oberoende skala dataflöde och lagring.

När ändringar görs i databasen skickas Azure Cosmos DB ändringsflöde 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. Du kan också samordna bredare nedströmsdataflytt med hjälp av Azure Data Factory pipelines eller Fabric Data Factory för att landa data i analyszoner.

Webbappen behöver bara data under en begränsad tid. Den här lösningen kör och tar regelbundet bort utgångna data från Azure Cosmos DB, vilket minskar kostnaderna. Du kan utlösa funktioner på begäran eller schemalägga dem att köras vid specifika tidpunkter.

Potentiella användningsfall

Den här lösningen är lämplig för alla program som:

  • Använder en enorm mängd data.
  • Kräver att data är tillgängliga inom en viss tidsram.
  • Använder data som upphör att gälla.

Exempel är appar som:

  • Anpassa kundupplevelsen och öka engagemanget med hjälp av livedataflöden och sensorer på fysiska platser.

  • Spåra kundernas utgiftsvanor och shoppingbeteende.

  • Spåra fordonsflottor och förbättra effektiviteten och säkerheten med hjälp av data om fordonsplats, prestanda och förarbeteende.

  • Prognostiserat väder.

  • Övervaka och hantera trafiksystem.

  • Analysera IoT-tillverkningsdata.

  • Övervaka smarta 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 du kan använda för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Well-Architected Framework.

Reliability

Tillförlitlighet hjälper till att säkerställa att ditt program kan uppfylla de åtaganden som du gör gentemot dina kunder. Mer information finns i Checklista för designgranskning för tillförlitlighet.

  • Ändringsflödet i Azure Cosmos DB garanterar leverans minst en gång. Utforma replikeringsfunktionen så att den är idempotent så att duplicerade händelser inte genererar inkonsekventa data i Table Storage.

  • Azure Front Door tillhandahåller automatisk regional redundans. Om den primära regionen blir otillgänglig dirigeras trafiken till väntelägesregionen utan manuella åtgärder.

Kostnadsoptimering

Kostnadsoptimering fokuserar på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Checklista för designgranskning för kostnadsoptimering.

  • Den primära kostnadsförmånen kommer från att flytta utgångna data från Azure Cosmos DB, som faktureras per enhet för begäran (RU), till Table Storage, som faktureras per transaktion och per GB som lagras. Den här processen är billigare för data som används sällan.

  • Om din arbetsbelastning har förutsägbara dataflödeskrav bör du överväga reserverad kapacitet för Azure Cosmos DB.

  • Använd ändringsflödet för replikering. Den här metoden minskar kodunderhållet jämfört med replikering i kärnprogrammet.

  • Den här lösningen medför extra kostnader för sekundär lagring och för de funktioner som hanterar datareplikering och förfallotid.

Operativ skicklighet

Operational Excellence omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Checklista för designgranskning för Operational Excellence.

  • 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 använder du tidsstämplar och kopieringsflaggor för att spåra migreringsstatus.

  • Ignorera borttagningsflöden som dina funktioner genererar när de tar bort poster från Azure Cosmos DB. Den här metoden förhindrar borttagning av poster från den sekundära lagringen i Azure Tabell.

Prestandaeffektivitet

Prestandaeffektivitet syftar på arbetsbelastningens förmåga att skala för att effektivt uppfylla användarnas krav. För mer information, se Designgranskningschecklistan för prestandaeffektivitet.

  • Svarstiden för ändringsflödesbearbetning påverkar hur snabbt data blir tillgängliga i Table Storage. Skala funktionsappplanen och batchinställningarna för att uppfylla dina svarstidskrav.

  • För att undvika frekventa partitioner väljer du en Azure Cosmos DB partitionsnyckel som distribuerar skrivdataflödet jämnt över logiska partitioner.

  • Azure Managed Redis minskar läsbelastningen på Azure Cosmos DB för långsamt föränderliga data, vilket minskar svarstiden och RU-förbrukningen.

Deltagare

Microsoft ansvarar för den här artikeln. Följande bidragsgivare skrev den här artikeln.

Huvudförfattare:

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

Annan deltagare:

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg