Skalbar orderbearbetning

Azure Cosmos DB
Azure HDInsight

Det här exempelscenariot är relevant för organisationer som behöver en mycket skalbar och elastisk arkitektur för onlinebeställningsbearbetning. Potentiella program omfattar e-handel och försäljningsställen, orderuppfyllelse samt inventeringsreservation och spårning.

Arkitektur

Diagram över exempelarkitektur för en skalbar orderbearbetningspipeline.

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

Dataflöde

Den här arkitekturen beskriver viktiga komponenter i en orderbearbetningspipeline. Data flödar genom scenariot på följande sätt:

  1. Händelsemeddelanden anger systemet via kundinriktade program (synkront via HTTP) och olika serverdelssystem (asynkront via Apache Kafka). Dessa meddelanden skickas till en kommandobearbetningspipeline.
  2. Varje händelsemeddelande matas in och mappas till en av en definierad uppsättning kommandon av en kommandoprocessors mikrotjänst. Kommandoprocessorn hämtar alla aktuella tillstånd som är relevanta för att köra kommandot från en ögonblicksbilddatabas för händelseströmmen. Kommandot körs sedan och kommandots utdata genereras som en ny händelse.
  3. Varje händelse som genereras som utdata från ett kommando checkas in i en händelseströmdatabas med hjälp av Azure Cosmos DB.
  4. För varje databasinfogning eller uppdatering som skickas till händelseströmsdatabasen genereras en händelse av Azure Cosmos DB-ändringsflödet. Underordnade system kan prenumerera på alla händelseämnen som är relevanta för systemet.
  5. Alla händelser från Azure Cosmos DB-ändringsflödet skickas också till en mikrotjänst för händelseströmmen för ögonblicksbilder, som beräknar eventuella tillståndsändringar som orsakas av händelser som har inträffat. Det nya tillståndet checkas sedan in på händelseströmmens ögonblicksbilddatabas som lagras i Azure Cosmos DB. Ögonblicksbilddatabasen innehåller en globalt distribuerad datakälla med låg svarstid för det aktuella tillståndet för alla dataelement. Händelseströmdatabasen innehåller en fullständig post med alla händelsemeddelanden som har passerat genom arkitekturen, vilket möjliggör robust testning, felsökning och haveriberedskapsscenarier.

Komponenter

  • Azure Cosmos DB är Microsofts globalt distribuerade databas med flera modeller som gör det möjligt för dina lösningar att elastiskt och oberoende skala dataflöde och lagring över valfritt antal geografiska regioner. Den erbjuder garantier för dataflöde, svarstid, tillgänglighet och konsekvens med omfattande serviceavtal (SLA). I det här scenariot används Azure Cosmos DB för lagring av händelseströmmar och ögonblicksbildslagring, och azure Cosmos DB-ändringsflödesfunktioner används för att ge datakonsekvens och felåterställning.
  • Apache Kafka på Azure HDInsight är en hanterad tjänstimplementering av Apache Kafka, en distribuerad strömningsplattform med öppen källkod för att skapa datapipelines och program för direktuppspelning i realtid. Kafka tillhandahåller även funktioner för meddelandeköer som liknar en meddelandekö, för publicering och prenumeration på namngivna dataströmmar. I det här scenariot används Kafka för att bearbeta inkommande och nedströmshändelser i pipelinen för orderbearbetning.

Information om scenario

I det här scenariot används en metod för händelsekällor med hjälp av en funktionell programmeringsmodell som implementeras via mikrotjänster. Varje mikrotjänst behandlas som en dataströmprocessor och all affärslogik implementeras via mikrotjänster. Den här metoden möjliggör hög tillgänglighet och återhämtning, geo-replikering och snabba prestanda.

Genom att använda hanterade Azure-tjänster som Azure Cosmos DB och HDInsight kan du minska kostnaderna genom att använda Microsofts expertis inom globalt distribuerad datalagring och hämtning i molnskala. Det här scenariot behandlar specifikt ett scenario för e-handel eller detaljhandel. Om du har andra behov av datatjänster bör du granska listan över tillgängliga fullständigt hanterade intelligenta databastjänster i Azure.

Potentiella användningsfall

Andra relevanta användningsfall är:

  • Serverdelssystem för e-handel eller detaljhandel.
  • Lagerhanteringssystem för detaljhandels- eller tillverkningsindustrin.
  • System för orderuppfyllelse.
  • Andra integreringsscenarier som är relevanta för en orderbearbetningspipeline.

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.

Många teknikalternativ är tillgängliga för meddelandeinmatning i realtid, datalagring, dataströmbearbetning, lagring av analysdata samt analys och rapportering.

Mikrotjänster har blivit en populär arkitekturstil för att skapa molnprogram som är elastiska och mycket skalbara, kan distribueras i oberoende delar och kan utvecklas snabbt. Mikrotjänster kräver en annan metod än när du utformar och skapar program. Vägledning om hur du skapar och kör en mikrotjänstbaserad arkitektur finns i Designa mikrotjänster i Azure.

Tillgänglighet

Det här scenariots metod för händelsekällor gör att systemkomponenter kan kopplas löst och distribueras oberoende av varandra. Azure Cosmos DB erbjuder hög tillgänglighet och hjälper organisationen att hantera de kompromisser som är kopplade till konsekvens, tillgänglighet och prestanda, allt med motsvarande garantier. Apache Kafka på HDInsight är också utformat för hög tillgänglighet.

Azure Monitor tillhandahåller enhetliga användargränssnitt för övervakning över olika Azure-tjänster. Mer information finns i Övervakning i Microsoft Azure. Event Hubs och Stream Analytics är båda integrerade med Azure Monitor.

Andra tillgänglighetsöverväganden finns i tillgänglighetschecklistan.

Skalbarhet

Kafka på HDInsight möjliggör konfiguration av lagring och skalbarhet för Kafka-kluster. Azure Cosmos DB ger snabba, förutsägbara prestanda och skalas sömlöst när ditt program växer. Den mikrotjänstbaserade arkitekturen för händelsekällor i det här scenariot gör det också enklare att skala systemet och utöka dess funktioner.

Andra skalbarhetsöverväganden finns i checklistan för prestandaeffektivitet som är tillgänglig i Azure Architecture Center.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Azure Cosmos DB-säkerhetsmodellen autentiserar användare och ger åtkomst till dess data och resurser. Mer information finns i Azure Cosmos DB-databassäkerhet.

Allmän vägledning om hur du utformar säkra lösningar finns i Azure Security-dokumentationen.

Motståndskraft

Arkitekturen för händelsekällor och tillhörande tekniker i det här exempelscenariot gör det här scenariot mycket motståndskraftigt när fel inträffar. Allmän vägledning om hur du utformar motståndskraftiga lösningar finns i Designa elastiska program för Azure.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

För att undersöka kostnaden för att köra det här scenariot är alla tjänster förkonfigurerade i kostnadskalkylatorn. Om du vill se hur prissättningen skulle ändras för ditt specifika scenario ändrar du lämpliga variabler så att de matchar din förväntade datavolym. I det här scenariot innehåller exempelpriset endast Azure Cosmos DB och ett Kafka-kluster för bearbetning av händelser som genererats från Azure Cosmos DB-ändringsflödet. Händelseprocessorer och mikrotjänster för ursprungliga system och andra underordnade system ingår inte, och deras kostnader är mycket beroende av kvantiteten och omfattningen av dessa tjänster samt de tekniker som valts för att implementera dem.

Valutan för Azure Cosmos DB är enheten för begäran (RU). Med enheter för begäranden behöver du inte reservera läs-/skrivkapaciteter eller etablera CPU, minne och IOPS. Azure Cosmos DB stöder olika API:er som har olika åtgärder, allt från enkla läsningar och skrivningar till komplexa graffrågor. Eftersom inte alla begäranden är lika tilldelade tilldelas begäranden en normaliserad mängd enheter för begäranden baserat på den mängd beräkning som krävs för att hantera begäran. Antalet enheter för begäranden som krävs av din lösning beror på dataelementets storlek och antalet läs- och skrivåtgärder för databasen per sekund. Mer information finns i Enheter för begäran i Azure Cosmos DB. Dessa uppskattade priser baseras på Azure Cosmos DB som körs i två Azure-regioner.

Vi har angett tre exempel på kostnadsprofiler baserat på hur mycket aktivitet du förväntar dig:

  • Liten: det här prisexemplet korrelerar till 5 RU:er som är reserverade med ett datalager på 1 TB i Azure Cosmos DB och ett litet Kafka-kluster (D3 v2).
  • Medel: Det här prisexemplet korrelerar till 50 RU:er som är reserverade med ett datalager på 10 TB i Azure Cosmos DB och ett mellanstort Kafka-kluster (D4 v2).
  • Stort: det här prisexemplet korrelerar till 500 RU:er som är reserverade med ett 30 TB datalager i Azure Cosmos DB och ett stort (D5 v2) Kafka-kluster.

Deltagare

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

Huvudsakliga författare:

Nästa steg

Det här exempelscenariot baseras på en mer omfattande version av den här arkitekturen som skapats av jet.com för dess orderbearbetningspipeline från slutpunkt till slutpunkt. Mer information finns i jet.com teknisk kundprofil och jet.com presentation på Build.

Se det här andra innehållet:

Se det relaterade arkitekturinnehållet: