Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
I en verksamhetskritisk arkitektur måste alla tillstånd lagras utanför beräkningen så mycket som möjligt. Valet av teknik baseras på dessa viktiga arkitektoniska egenskaper:
Egenskaper | Att tänka på |
---|---|
Prestanda | Hur mycket beräkning krävs? |
Svarstid | Vilken inverkan kommer avståndet mellan användaren och datalagret att ha på svarstiden? Vilken är önskad konsekvensnivå med kompromissen om svarstid? |
Responsivitet | Måste datalagret alltid vara tillgängligt? |
Skalbarhet | Vad är partitioneringsschemat? |
Varaktighet | Förväntas data vara långvariga? Vad är kvarhållningsprincipen? |
Motståndskraft | Kan datalagret redundansväsnas automatiskt i händelse av ett fel? Vilka åtgärder har vidtagits för att minska redundanstiden? |
Säkerhet | Krypteras data? Kan datalagringen nås via det offentliga nätverket? |
I den här arkitekturen finns det två datalager:
Databas
Butiker som är relaterade till arbetsbelastningen. Vi rekommenderar att alla tillstånd lagras globalt i en databas som är skild från regionala stämplar. Skapa redundans genom att distribuera databasen mellan regioner. För verksamhetskritiska arbetsbelastningar bör synkronisering av data mellan regioner vara det främsta problemet. I händelse av ett fel bör även skrivbegäranden till databasen fortfarande fungera.
Datareplikering i en aktiv-aktiv konfiguration rekommenderas starkt. Programmet bör kunna ansluta direkt till en annan region. Alla instanser ska kunna hantera läs- och skrivbegäranden.
Meddelandekö
Den enda tillståndskänsliga tjänsten i den regionala stämpeln är meddelandekoordinatorn, som lagrar begäranden under en kort period. Mäklaren tjänar behovet av buffring och tillförlitliga meddelanden. Bearbetade begäranden sparas i den globala databasen.
Andra dataöverväganden finns i Misson-critical guidance in Well-architected Framework: Data platform considerations (Misson-critical guidance in Well-architected Framework: Data platform considerations).
Den här arkitekturen använder Azure Cosmos DB för NoSQL. Det här alternativet väljs eftersom det innehåller de flesta funktioner som behövs i den här designen:
Skrivning i flera regioner
Skrivning i flera regioner aktiveras med repliker som distribueras till varje region där en stämpel distribueras. Varje stämpel kan skriva lokalt och Azure Cosmos DB hanterar datareplikering och synkronisering mellan stämplarna. Den här funktionen minskar svarstiden avsevärt för geografiskt distribuerade slutanvändare av programmet. Referensimplementeringen för Azure Mission-Critical använder teknik med flera original för att ge maximal återhämtning och tillgänglighet.
Zonredundans aktiveras också inom varje replikerad region.
Mer information om skrivningar i flera regioner finns i Konfigurera skrivningar i flera regioner i dina program som använder Azure Cosmos DB.
Konflikthantering
Med möjligheten att utföra skrivningar i flera regioner är det nödvändigt att införa en konflikthanteringsmodell eftersom samtidiga skrivningar kan medföra postkonflikter. Last Writer Wins är standardmodellen och används för designen Verksamhetskritisk. Den sista skrivaren, som definieras av de associerade tidsstämplarna för posterna, vinner konflikten. Azure Cosmos DB för NoSQL gör det också möjligt att definiera en anpassad egenskap.
Frågeoptimering
En allmän rekommendation för frågeeffektivitet för läsintensiva containrar med ett stort antal partitioner är att lägga till ett likhetsfilter med itemID identifierat. En djupgående genomgång av rekommendationer för frågeoptimering finns i Felsöka frågeproblem när du använder Azure Cosmos DB.
Säkerhetskopieringsfunktion
Vi rekommenderar att du använder den inbyggda säkerhetskopieringsfunktionen i Azure Cosmos DB för dataskydd. Säkerhetskopieringsfunktionen i Azure Cosmos DB stöder onlinesäkerhetskopior och dataåterställning på begäran.
Anteckning
De flesta arbetsbelastningar är inte enbart OLTP. Det finns en ökande efterfrågan på realtidsrapportering, till exempel att köra rapporter mot driftsystemet. Detta kallas även HTAP (hybridtransaktions- och analysbearbetning). Azure Cosmos DB stöder den här funktionen via Azure Synapse Link för Azure Cosmos DB.
Datamodellen bör utformas så att funktioner som erbjuds av traditionella relationsdatabaser inte krävs. Till exempel sekundärnycklar, strikt rad-/kolumnschema, vyer och andra.
Arbetsbelastningen har följande egenskaper för dataåtkomst:
FeedIterator
med gräns för antalet resultat används.Azure Cosmos DB konfigureras på följande sätt:
Konsekvensnivån är inställd på standardkonsekvensenför sessioner eftersom den är den mest använda nivån för enskilda regioner och globalt distribuerade program. Svagare konsekvens med högre dataflöde behövs inte på grund av den asynkrona typen av skrivbearbetning och kräver inte låg svarstid vid databasskrivning.
Anteckning
Sessionskonsekvensnivån erbjuder en rimlig kompromiss för svarstider, tillgänglighet och konsekvensgarantier för det här specifika programmet. Det är viktigt att förstå att stark konsekvensnivå inte är tillgänglig för skrivdatabaser med flera original.
Partitionsnyckeln är inställd på /id
för alla samlingar. Det här beslutet baseras på användningsmönstret, som främst "skriver nya dokument med GUID som ID" och "läser många olika dokument efter ID". Förutsatt att programkoden bibehåller sin ID-unikhet fördelas nya data jämnt i partitioner av Azure Cosmos DB, vilket möjliggör oändlig skala.
Indexeringsprincipen konfigureras för samlingar för att optimera frågor. För att optimera RU-kostnader och prestanda används en anpassad indexeringsprincip. Den här principen indexerar endast de egenskaper som används i frågepredikat. Programmet använder till exempel inte kommentarstextfältet som ett filter i frågor. Den exkluderades från den anpassade indexeringsprincipen.
Här är ett exempel från implementeringen som visar indexeringsprincipinställningar med Terraform:
indexing_policy {
excluded_path {
path = "/description/?"
}
excluded_path {
path = "/comments/text/?"
}
included_path {
path = "/*"
}
}
Information om anslutning från programmet till Azure Cosmos DB i den här arkitekturen finns i Överväganden för programplattform för verksamhetskritiska arbetsbelastningar
Verksamhetskritiska system använder ofta meddelandetjänster för meddelande- eller händelsebearbetning. Dessa tjänster främjar lös koppling och fungerar som en buffert som isolerar systemet mot oväntade toppar i efterfrågan.
Följande är designöverväganden och rekommendationer för Azure Service Bus Premium och Azure Event Hubs i en verksamhetskritisk arkitektur.
Meddelandesystemet måste kunna hantera det dataflöde som krävs (som i MB per sekund). Tänk också på följande:
Azure Service Bus Premium-nivån är den rekommenderade lösningen för värdefulla meddelanden som bearbetningen måste garanteras för. Följande är information om det här kravet när du använder Azure Service Bus Premium:
För att säkerställa att meddelanden överförs korrekt till och godkänns av asynkron meddelandekö bör meddelandeproducenterna använda en av de Service Bus API-klienter som stöds. API:er som stöds returneras endast från en sändningsåtgärd om meddelandet har sparats i kön/ämnet.
För att säkerställa att meddelanden på bussen bearbetas bör du använda PeekLock-mottagningsläget. Det här läget aktiverar bearbetning minst en gång. Följande beskriver processen:
Eftersom meddelanden kan bearbetas mer än en gång bör meddelandehanterare göras idempotent.
I RFC 7231 står det i Hypertext Transfer Protocol: "A ... metoden anses vara idempotent om den avsedda effekten på servern för flera identiska begäranden med den metoden är samma som effekten för en enda sådan begäran."
En vanlig metod för att göra meddelandehantering idempotent är att kontrollera ett beständigt arkiv, till exempel en databas, om meddelandet redan har bearbetats. Om den har bearbetats skulle du inte köra logiken för att bearbeta den igen.
Meddelandekoordinatorn måste vara tillgänglig för producenter att skicka meddelanden och konsumenter för att ta emot dem. Följande är information om detta krav:
Anteckning
Geo-haveriberedskap i Azure Service Bus replikerar endast metadata mellan regioner. Den här funktionen replikerar inte meddelanden.
Meddelandesystemet fungerar som en buffert mellan meddelandeproducenter och konsumenter. Det finns viktiga indikatortyper som du bör övervaka i ett verksamhetskritiskt system som ger värdefulla insikter som beskrivs nedan:
Meddelandesystemets hälsotillstånd måste beaktas i hälsokontrollerna för ett verksamhetskritiskt program. Överväg följande faktorer:
Distribuera referensimplementeringen för att få en fullständig förståelse för de resurser och deras konfiguration som används i den här arkitekturen.
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuUtbildning
Modul
Introduktion till Azure-meddelandetjänster - Training
Lär dig hur Azure Storage-köer, Event Hubs, Event Grid och Service Bus kan förbättra kommunikationen mellan enheter.
Dokumentation
CQRS Pattern - Azure Architecture Center
Learn how to segregate operations that read data from operations that update data by using the Command Query Responsibility Segregation (CQRS) pattern.