Dela via


Arkitekturstrategier för att optimera skalning och partitionering

Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:

PE:05 Optimera skalning och partitionering. Införliva tillförlitlig och kontrollerad skalning och partitionering. Arbetsbelastningens skalningsenhetsdesign utgör grunden för skalnings- och partitioneringsstrategin.

Den här guiden beskriver rekommendationerna för skalning och partitionering av en arbetsbelastning. Skalning är möjligheten att öka eller minska de resurser som allokeras till en arbetsbelastning baserat på efterfrågan. Partitionering innebär att dela upp arbetsbelastningen i mindre, hanterbara enheter för att distribuera data och bearbeta över flera resurser. En arbetsbelastning som inte skalas eller partitioneras kan uppleva dåliga prestanda under perioder med hög efterfrågan och underutnyttad kapacitet under perioder med låg efterfrågan.

Definitioner

Begrepp Definition
Autoscale En funktion som automatiskt justerar kapacitetsgränserna för en tjänst baserat på fördefinierade konfigurationer, så att den kan skalas upp eller ned efter behov.
Capacity Den övre gränsen eller den maximala kapaciteten för en viss tjänst eller funktion.
Klienttillhörighet (sessionstillhörighet) Avsiktlig routning av begäranden från en enskild klient till en enskild serverinstans för att säkerställa konsekvent sessionshantering.
Konsekvens (distribuerad databas) Enhetligheten för data över flera noder i en distribuerad databas, vilket säkerställer att alla repliker har samma data vid en viss tidpunkt.
Konsekvens (relationsdatabas) Egenskapen för en transaktion som för en databas från ett giltigt tillstånd till ett annat, med bibehållen dataintegritet.
Konsekvensnivå En konfiguration som definierar hur och när data replikeras i ett distribuerat databassystem, som avgör kompromissen mellan konsekvens och prestanda.
Datalåsning En mekanism som används för att förhindra samtidiga uppdateringar av samma data.
Horisontell skalning En skalningsmetod som lägger till instanser av en viss typ av resurs.
Optimistisk konkurrenshantering En metod för att uppdatera databaser som använder ögonblicksbilder för att göra uppdateringar i stället för traditionella låsmekanismer.
Partitioning Processen att fysiskt dela upp data i separata datalager.
Skalbarhet Möjligheten för en arbetsbelastning att dynamiskt ändra sina kapacitetsgränser för att hantera olika nivåer av efterfrågan.
Skalningsenhet En grupp resurser som skalas proportionellt tillsammans.
Tillståndstillhörighet Lagring av klientsessionsdata på en enskild server så att samma server hanterar efterföljande begäranden från samma klient.
Vertikal skalning En skalningsmetod som lägger till beräkningskapacitet till befintliga resurser.

Både skalning och partitionering bidrar till prestandaeffektivitet genom att säkerställa att resurser används effektivt och att arbetsbelastningen kan hantera varierande belastningar. Dessa metoder är särskilt viktiga i molnmiljöer där program måste vara flexibla och anpassningsbara för föränderliga krav. Skalning säkerställer att du kan utöka arbetsbelastningskapaciteten för att möta ökande krav. Med partitionering kan du dela upp uppgifter eller data effektivt för att hantera dessa växande behov. Grunden för båda dessa processer är arbetsbelastningens skalningsenhetsdesign. Den avgör hur din arbetsbelastning ska växa och distribuera uppgifter. Genom att använda en tillförlitlig och kontrollerad metod för skalning och partitionering kan du kringgå potentiella ineffektiviteter för arbetsbelastningar.

Optimera skalning

Optimera skalning är processen att justera antalet servrar, instanser eller resurser för att uppfylla de fluktuerande kraven för en arbetsbelastning. Det säkerställer att arbetsbelastningen kan hantera ökad trafik eller krav utan prestandaförsämring eller driftstopp.

Välj en skalningsstrategi

Att välja en skalningsstrategi innebär att välja mellan vertikala eller vågräta metoder för att förbättra kapaciteten för en arbetsbelastning baserat på dess specifika krav. Genom att välja rätt strategi ser du till att resurserna justeras effektivt för att uppfylla arbetsbelastningskraven utan överanvändning eller slöseri. Om du vill välja rätt skalningsstrategi måste du förstå användningsfallen för vertikal och horisontell skalning och hur de uppfyller arbetsbelastningens behov.

Förstå vertikal skalning. Med vertikal skalning kan du öka kapaciteten för en enskild resurs, till exempel uppgradera till en större server eller instansstorlek. Vertikal skalning är användbart när arbetsbelastningen kan dra nytta av ökad bearbetningskraft, minne eller andra resurser i en enda instans. Vertikal skalning är lämplig för arbetsbelastningar som inte är lätta att dela upp i mindre delar eller när programarkitekturen inte stöder horisontell skalning.

Förstå horisontell skalning. Med horisontell skalning kan du lägga till fler instanser eller resurser för att distribuera arbetsbelastningen över flera servrar. Horisontell skalning ger fördelar som förbättrad återhämtning, ökad kapacitet och möjlighet att hantera ökade trafik- eller arbetsbelastningskrav. Det är effektivt för molnbaserade program som är utformade för att köras på flera noder. Horisontell skalning är lämplig för arbetsbelastningar som kan delas in i mindre delar som körs oberoende av varandra.

Förstå arbetsbelastningen. Lämpligheten för vertikal eller vågrät skalning beror på arbetsbelastningens specifika egenskaper och krav. Regelbunden prestandaövervakning och testning inom följande områden kan hjälpa dig att optimera skalningsstrategin över tid:

  • Krav: Förstå de specifika kraven för arbetsbelastningen genom att ta hänsyn till faktorer som resurskrav, skalbarhetsbehov och arbetsbelastningens begränsningar.

  • Skalningsenheter: Skapa en skalningsenhetsdesign för komponenter som förväntas skalas tillsammans. Till exempel kan 100 virtuella datorer kräva två köer och tre lagringskonton för att hantera den extra arbetsbelastningen. Skalningsenheten skulle vara 100 virtuella datorer, två köer och tre lagringskonton. Du bör oberoende skala alla komponenter som upplever variationer i kapacitetsanvändningen.

  • Arkitektur: Utvärdera utformningen av programarkitekturen. Vissa program kan vara utformade för att skalas horisontellt, med tillståndslösa komponenter som enkelt kan distribueras över flera instanser. Andra program kan ha tillståndskänsliga komponenter eller beroenden som gör vertikal skalning mer lämplig. Utvärdera kraven på skalbarhet och elasticitet för arbetsbelastningen.

Utforma infrastruktur för skalning

Att utforma infrastruktur för skalning är processen att skapa en arkitektur som kan hantera ökande krav och arbetsbelastningar genom att lägga till eller justera resurser efter behov. Det handlar om att planera och implementera lösningar som kan skalas horisontellt eller vertikalt för att hantera tillväxt. Strategier omfattar att undvika singletons som kan bli flaskhalsar och frikoppla programkomponenter för att säkerställa oberoende skalbarhet. När du utformar en arbetsbelastning som ska vara skalbar kan den effektivt distribuera arbetsbelastningen över flera resurser, vilket förhindrar flaskhalsar och maximerar resursutnyttjandet.

Undvik singletons. Du bör undvika att använda en enda centraliserad resurs för hela arbetsbelastningen. Distribuera i stället din arbetsbelastning över flera resurser för bättre skalbarhet, feltolerans och prestanda. Utforska några specifika exempel och designöverväganden för att undvika singletons i arbetsbelastningsresurser:

  • Köbaserad belastningsutjämning: I stället för att förlita sig på en enda kö för att bearbeta meddelanden bör du överväga att partitionera arbetsbelastningen i flera köer för att distribuera bearbetningsbelastningen. Det ger bättre skalbarhet och parallell bearbetning.

  • Databearbetning: Singleton-mönster visas ofta i databearbetningsscenarier där bearbetningen inte fläktas ut. Dela upp långvariga uppgifter i mindre uppgifter som kan skalas bättre för att distribuera arbetsbelastningen över flera resurser och dra nytta av parallellitet.

  • Designmönster: Designmönster som -out/-in eller Pipes and Filters kan hjälpa dig att undvika singletons i arbetsflöden. Dessa mönster möjliggör distribution av bearbetningsuppgifter över flera resurser och främjar skalbarhet och flexibilitet.

Frikoppla komponenter. Avkoppling av programkomponenter är en viktig aspekt av designen för skalbarhet. Det innebär att dela upp programmet i mindre, oberoende komponenter som kan användas och skalas oberoende baserat på specifika arbetsbelastningskrav. Om en komponent till exempel kräver fler resurser på grund av ökad efterfrågan kan du skala komponenten utan att påverka de andra. Den här flexibiliteten säkerställer effektiv resursallokering och förhindrar flaskhalsar. Genom att avkoda komponenter kan du isolera fel och minimera effekten på det övergripande programmet. Om en komponent misslyckas kan de andra komponenterna fortsätta att fungera oberoende av varandra.

Frikopplade komponenter är enklare att underhålla och uppdatera. Ändringar eller uppdateringar av en komponent kan göras utan att påverka de andra eftersom de är oberoende. Följ dessa riktlinjer för att frikoppla programkomponenter för skalbarhet:

  • Uppdelning av problem: Identifiera ansvarsområden och funktioner i ditt program. Dela upp ansvarsområdena i separata komponenter baserat på deras specifika uppgifter. Du kan till exempel ha separata komponenter för användarautentisering, databearbetning och användargränssnitt.

  • Lös koppling: Utforma komponenterna så att de kommunicerar med varandra via väldefinierade gränssnitt och protokoll. Den här designen minskar beroenden mellan komponenter och möjliggör enklare ersättning eller skalning av enskilda komponenter.

  • Asynkron kommunikation: Använd asynkrona kommunikationsmönster som meddelandeköer eller händelsedrivna arkitekturer för att frikoppla komponenter ytterligare. Dessa mönster gör det möjligt för komponenter att bearbeta uppgifter oberoende av varandra i sin egen takt, vilket förbättrar den övergripande skalbarheten.

  • Mikrotjänster: Överväg att implementera mikrotjänster, som är små, oberoende tjänster som fokuserar på specifika affärsfunktioner. Varje mikrotjänst kan utvecklas, distribueras och skalas separat, vilket ger större flexibilitet och skalbarhet.

Utforma program för skalning

När du skalar en arbetsbelastning bör du utforma programmet för att distribuera belastningen. Bara för att du kan lägga till fler repliker på infrastrukturnivå betyder det inte att ditt program kan använda replikerna. Att utforma ett program att skala handlar om att strukturera ett program så att det kan hantera ökade krav genom att distribuera arbetsbelastningen mellan resurser. Undvik lösningar som kräver klienttillhörighet, datalåsning eller tillståndstillhörighet för en enskild instans om möjligt. Du vill dirigera en klient eller process till en resurs som har tillgänglig kapacitet. Tänk på följande strategier för att utforma för programskalbarhet:

Eliminera sessionstillstånd på serversidan. Du bör utforma program så att de är tillståndslösa där det är möjligt. För tillståndskänsliga program bör du använda ett tillståndslager som är externt för servern. Att externalisera sessionstillståndet är att lagra sessionsdata utanför programservern eller containern. Du kan externalisera sessionstillståndet för att distribuera sessionsdata över flera servrar eller tjänster, vilket möjliggör sömlös sessionshantering i en distribuerad miljö. Tänk på följande när du externaliserar sessionstillståndet:

  • Utvärdera dina sessionskrav. Förstå sessionsdata som måste lagras och hanteras. Överväg sessionsattribut, tidsgränser för sessioner och eventuella specifika krav för sessionsreplikering eller beständighet. Fastställa storleken på sessionstillståndet och frekvensen för läs- och skrivåtgärder.

  • Välj en lösning. Välj en lagringslösning som överensstämmer med dina prestanda- och skalbarhetsbehov. Alternativen omfattar användning av en distribuerad cache, en databas eller en sessionstillståndstjänst. Tänk på faktorer som datakonsekvens, svarstid och skalbarhet när du gör ditt val.

  • Konfigurera ditt program. Uppdatera programmet så att det använder den valda lagringslösningen för sessionstillstånd. Du kan behöva ändra programmets konfigurationsfiler eller kod för att ansluta till den externa lagringstjänsten.

  • Uppdatera logiken. Ändra programmets sessionshanteringslogik för att lagra och hämta sessionsdata från den externa lagringslösningen. Du kan behöva använda API:er eller bibliotek som tillhandahålls av lagringslösningen för att hantera sessionstillstånd.

Eliminera klienttillhörighet. Klienttillhörighet kallas även sessionstillhörighet eller sticky-sessioner. När du eliminerar klienttillhörighet distribuerar du klientbegäranden jämnt över flera repliker eller servrar, utan att dirigera alla begäranden från en klient till samma replik. Den här konfigurationen kan förbättra skalbarheten och prestandan för program genom att tillåta alla tillgängliga repliker att bearbeta begäranden.

Granska algoritmen för belastningsutjämning. En belastningsutjämningsalgoritm kan orsaka oavsiktlig och artificiell klientbindning där för många begäranden skickas till en serverdelsinstans. Pinning kan ske om algoritmen har konfigurerats för att alltid skicka begäranden från samma användare till samma instans. Det kan också inträffa om begäranden är för lika varandra.

Eliminera datalåsning. Datalåsning säkerställer konsekvens men har prestandanackdelar. Det kan orsaka låseskaleringar och negativt påverka samtidighet, svarstid och tillgänglighet. För att eliminera datalåsning bör du implementera optimistisk samtidighet. Icke-relationella databaser bör använda optimistisk samtidighetskontroll och ha rätt konsekvensnivå. Din strategi för datapartitionering bör också stödja dina samtidighetsbehov.

Använd dynamisk tjänstidentifiering. Dynamisk tjänstidentifiering är processen att automatiskt identifiera och registrera tjänster i ett distribuerat system. Det gör att klienter kan identifiera tillgängliga tjänster utan att vara nära kopplade till specifika instanser. Klienter ska inte kunna vara direkt beroende av en specifik instans i arbetsbelastningen. För att undvika dessa beroenden bör du använda en proxy för att distribuera och omdistribuera klientanslutningar. Proxyn fungerar som mellanhand mellan klienter och tjänster och tillhandahåller ett abstraktionslager som gör att tjänster kan läggas till eller tas bort utan att påverka klienter.

Använd bakgrundsaktiviteter. När ett program skalas kan det hantera en ökande arbetsbelastning eller ett högre antal samtidiga begäranden. Genom att avlasta intensiva uppgifter som bakgrundsaktiviteter kan huvudprogrammet hantera användarbegäranden utan att resursintensiva åtgärder överbelastar det. Följ dessa steg för att avlasta uppgifter som bakgrundsaktiviteter:

  1. Hitta processorintensiva och I/O-intensiva uppgifter i ditt program som du kan avlasta. Dessa uppgifter omfattar vanligtvis stora beräkningar eller interaktioner med externa resurser, till exempel databaser eller nätverksåtgärder.

  2. Utforma ditt program för att stödja bakgrundsaktiviteter. Frikoppla de intensiva uppgifterna från huvudprogramlogik och tillhandahålla en mekanism för att starta och hantera bakgrundsaktiviteter.

  3. Implementera bakgrundsbearbetning med lämpliga tekniker eller ramverk. Inkludera funktioner som tillhandahålls av ditt programmeringsspråk eller din plattform, till exempel asynkron programmering, trådning eller uppgiftsköer. Innehåller intensiva åtgärder i separata aktiviteter eller trådar. Dessa aktiviteter kan köras samtidigt eller schemaläggas för att köras med specifika intervall.

  4. Distribuera bakgrundsaktiviteter om det finns många av dem, eller om aktiviteterna kräver mycket tid eller resurser. En möjlig lösning finns i mönstret Konkurrerande konsumenter.

Konfigurera skalning

Att konfigurera skalning är processen att konfigurera och justera parametrar för att dynamiskt allokera resurser baserat på arbetsbelastningskrav. Den omfattar strategier som att använda funktioner för automatisk skalning, förstå tjänstskalningsgränser och implementera meningsfulla belastningsmått. Korrekt konfiguration säkerställer att ett program kan svara på varierande krav samtidigt som effektiviteten maximeras. När du konfigurerar skalning bör du överväga följande strategier:

Använd tjänster med autoskalning. Autoskalningsfunktionen skalar automatiskt infrastrukturen för att möta efterfrågan. Använd PaaS-erbjudanden (plattform som en tjänst) med inbyggda funktioner för autoskalning. Den enkla skalningen på PaaS är en stor fördel. För att skala ut virtuella datorer krävs till exempel en separat lastbalanserare, hantering av klientbegäranden och externt lagrat tillstånd. PaaS-erbjudanden hanterar de flesta av dessa uppgifter.

Begränsa autoskalning. Ange automatiska skalningsgränser för att minimera överskalning som kan leda till onödiga kostnader. Ibland kan du inte ange skalningsgränser. I dessa fall bör du ange aviseringar som meddelar dig när komponenten når den maximala skalningsgränsen och är överskalad.

Förstå gränser för tjänstskalning. När du förstår gränser, steg och begränsningar för tjänstskalning kan du fatta välgrundade beslut när du väljer en tjänst. Skalningsgränser avgör om den valda tjänsten kan hantera den förväntade arbetsbelastningen, skala effektivt och uppfylla programmets prestandakrav. Skalningsgränser att överväga är:

  • Skalningsgränser: Skalningsgränser är den maximala kapacitet som en plats eller tjänst kan hantera. Det är viktigt att känna till dessa gränser för att säkerställa att tjänsten kan hantera den förväntade arbetsbelastningen och hantera den högsta användningen utan prestandaförsämring. Varje resurs har en övre skalningsgräns. Om du behöver gå längre än skalningsgränserna bör du partitionera arbetsbelastningen.

  • Skalningssteg: Tjänster skalas i definierade steg. Beräkningstjänster kan till exempel skalas efter instanser och poddar medan databaser kan skalas efter instanser, transaktionsenheter och virtuella kärnor. Det är viktigt att förstå dessa steg för att optimera resursallokering och förhindra resursflafsning.

  • Skalningsbegränsningar: Vissa tjänster gör att du kan skala upp eller ut, men begränsa möjligheten att automatiskt vända skalningen. Du är tvungen att skala in manuellt, eller så kan du behöva distribuera om en ny resurs. Dessa begränsningar är ofta till för att skydda arbetsbelastningen. Att skala ned eller skala in kan få konsekvenser för arbetsbelastningens tillgänglighet och prestanda. En tjänst kan framtvinga vissa begränsningar för att säkerställa att arbetsbelastningen har tillräckligt med resurser för att fungera effektivt. Dessa begränsningar kan påverka datakonsekvens och synkronisering, särskilt i distribuerade system. Tjänsten kan ha mekanismer för att hantera datareplikering och konsekvens vid upp- eller utskalning, men kanske inte har samma stödnivå för att skala ned eller in.

Använd meningsfulla belastningsmått. Skalning bör använda meningsfulla belastningsmått som skalningsutlösare. Meningsfulla belastningsmått omfattar enkla mått, till exempel CPU eller minne. De omfattar även mer avancerade mått, till exempel ködjup, SQL-frågor, anpassade måttfrågor och HTTP-kölängd. Överväg att använda en kombination av enkla och avancerade belastningsmått som skalningsutlösare.

Använd en buffert. En buffert är en outnyttjad kapacitet som kan användas för att hantera toppar i efterfrågan. En väl utformad arbetsbelastningsplaner för oväntade toppar i arbetsbelastningen. Du bör lägga till en buffert för att hantera toppar för horisontell och lodrät skalning.

Förhindra flaxning. Flapping är ett loopningsvillkor som inträffar när en skalningshändelse utlöser en händelse i motsatt skala, vilket skapar en kontinuerlig skalningsåtgärd fram och tillbaka. Om skalning i till exempel minskar antalet instanser kan cpu-användningen öka i de återstående instanserna, vilket utlöser en utskalningshändelse. Utskalningshändelsen gör i sin tur att CPU-användningen minskar och upprepar processen.

Det är viktigt att välja en tillräcklig marginal mellan tröskelvärdena för utskalning och inskalning för att undvika flaxning. Du kan förhindra frekventa och onödiga åtgärder för in- och utskalning genom att ange tröskelvärden som ger en betydande skillnad i CPU-användning.

Använd distributionsstämplar. Det finns tekniker som gör det enklare att skala en arbetsbelastning. Du kan använda mönstret Distributionsstämplar för att enkelt skala en arbetsbelastning genom att lägga till en eller flera skalningsenheter.

Risk: Även om skalning hjälper till att optimera kostnaderna genom att justera kapaciteten för att möta efterfrågan, kan det resultera i en övergripande ökad kostnad under långa perioder med hög efterfrågan.

Testa skalning

Testningsskalning innebär att simulera olika arbetsbelastningsscenarier i en kontrollerad miljö för att utvärdera hur en arbetsbelastning svarar på olika nivåer av efterfrågan. Det hjälper till att säkerställa att arbetsbelastningen skalas effektivt och maximerar prestandaeffektiviteten vid olika belastningar.

Du måste se till att din arbetsbelastning skalas effektivt under verkliga förhållanden. Det är viktigt att utföra belastnings- och stresstester i en miljö som speglar produktionskonfigurationen. Dessa tester, som utförs i icke-produktionsmiljöer, gör att du kan utvärdera både vertikala och horisontella skalningsstrategier och avgöra vilken som optimerar prestanda mest effektivt. Här är en rekommenderad metod för att testa skalning:

  • Definiera arbetsbelastningsscenarier. Identifiera de viktiga arbetsbelastningsscenarier som du behöver testa, till exempel ökad användartrafik, samtidiga begäranden, datavolym eller resursanvändning.

  • Använd produktionsliknande testmiljö. Skapa en separat testmiljö som liknar produktionsmiljön när det gäller infrastruktur, konfiguration och data.

  • Ange prestandamått. Definiera de prestandamått som ska mätas, till exempel svarstid, dataflöde, processor- och minnesanvändning och felfrekvenser.

  • Utveckla testfall. Utveckla testfall som simulerar olika arbetsbelastningsscenarier, vilket gradvis ökar belastningen för att utvärdera prestanda på olika nivåer.

  • Kör och övervaka tester. Kör testerna med hjälp av de definierade testfallen och samla in prestandadata på varje belastningsnivå. Övervaka arbetsbelastningsbeteende, resursförbrukning och prestandaförsämring.

  • Analysera och optimera skalning. Analysera testresultaten för att identifiera prestandaflaskhalsar, skalbarhetsbegränsningar eller förbättringsområden. Optimera konfigurationen, infrastrukturen eller koden för att förbättra skalbarheten och prestandan. Det tar tid för skalningen att slutföras, så testa effekterna av skalningsfördröjningar.

  • Hantera beroenden. Hitta potentiella beroendeproblem. Skalning eller partitionering i ett område i en arbetsbelastning kan orsaka prestandaproblem för ett beroende. Tillståndskänsliga delar av en arbetsbelastning, till exempel databaser, är den vanligaste orsaken till problem med beroendeprestanda. Databaser kräver noggrann design för att skala vågrätt. Du bör överväga åtgärder, till exempel optimistisk samtidighet eller datapartitionering, för att möjliggöra mer dataflöde till databasen.

  • Testa igen efter justeringar. Upprepa skalbarhetstesterna när du har implementerat optimeringar för att verifiera förbättringarna och se till att arbetsbelastningen kan hantera de förväntade arbetsbelastningarna effektivt.

Kompromiss: Överväg budgetbegränsningar och kostnadseffektivitetsmål för din arbetsbelastning. Vertikal skalning kan innebära högre kostnader på grund av behovet av större och mer kraftfulla resurser. Horisontell skalning ger kostnadsbesparingar genom att använda mindre instanser som kan läggas till eller tas bort baserat på efterfrågan.

Partitionsarbetsbelastning

Partitionering är processen att dela upp en stor datamängd eller arbetsbelastning i mindre, mer hanterbara delar som kallas partitioner. Varje partition innehåller en delmängd av data eller arbetsbelastning och lagras eller bearbetas vanligtvis separat. Partitionering möjliggör parallell bearbetning och minskar konkurrensen. Genom att dela upp arbetsbelastningen i mindre enheter kan programmet bearbeta varje enhet separat. Resultatet är bättre användning av resurser och snabbare bearbetningstider. Partitionering hjälper också till att distribuera data över flera lagringsenheter, vilket minskar belastningen på enskilda enheter och förbättrar den övergripande prestandan.

Förstå partitionering

Den specifika partitioneringsmetod som du använder beror på vilken typ av data eller arbetsbelastning du har och vilken teknik du använder. Några vanliga strategier för partitionering är:

  • Horisontell partitionering: I den här metoden delas datauppsättningen eller arbetsbelastningen upp baserat på specifika kriterier, till exempel intervall med värden eller specifika attribut. Varje partition innehåller en delmängd av data som uppfyller de definierade kriterierna.

  • Vertikal partitionering: I den här metoden delas datauppsättningen eller arbetsbelastningen baserat på specifika attribut eller kolumner. Varje partition innehåller en delmängd av kolumnerna eller attributen, vilket ger effektivare åtkomst till nödvändiga data.

  • Funktionell partitionering: I den här metoden delas data eller arbetsbelastning upp baserat på de specifika funktioner eller åtgärder som måste utföras. Varje partition innehåller de data eller komponenter som krävs för en specifik funktion, vilket möjliggör optimerad bearbetning och prestanda.

Planera partitionering

Det är viktigt att tänka på faktorer som datadistribution, frågemönster, datatillväxt och arbetsbelastningskrav vid partitionering. Korrekt planering och design är avgörande för att säkerställa effektiviteten i partitionering och maximera prestandaeffektiviteten. Om du hanterar partitionering som en eftertanke är det mer utmanande eftersom du redan har en live-arbetsbelastning att underhålla. Du kan behöva ändra dataåtkomstlogik, distribuera stora mängder data mellan partitioner och stödja fortsatt användning under datadistributionen.

Implementera partitionering

Det är viktigt att analysera egenskaperna för dina data, åtkomstmönster, samtidighetskrav och skalbarhetsmål när du bestämmer vilken typ av partitionering som ska användas. Varje typ av partitionering har sina egna fördelar och överväganden. Här följer några faktorer att tänka på för varje typ av partitionering:

  • Horisontell partitionering är lämplig när du vill distribuera data över flera resurser eller servrar för bättre skalbarhet och prestanda. Det är effektivt när arbetsbelastningen kan parallelliseras och bearbetas oberoende av varandra på varje partition. Överväg horisontell partitionering när flera användare eller processer måste kunna komma åt eller uppdatera datauppsättningen samtidigt.

  • Vertikal partitionering är lämplig när vissa attribut eller kolumner används ofta, medan andra används mindre ofta. Vertikal partitionering ger effektiv åtkomst till nödvändiga data genom att minimera onödig datahämtning.

  • Funktionell partitionering är lämplig när olika funktioner kräver olika delmängder av data och kan bearbetas oberoende av varandra. Funktionell partitionering kan optimera prestanda genom att låta varje partition fokusera specifika åtgärder.

Testa och optimera partitionering

Testa partitioneringsschemat för att verifiera strategins effektivitet och effektivitet så att du kan göra justeringar för att förbättra prestandan. Mät faktorer som svarstid, dataflöde och skalbarhet. Jämför resultaten med prestandamål och identifiera eventuella flaskhalsar eller problem. Identifiera potentiella optimeringsmöjligheter baserat på analysen. Du kan behöva omdistribuera data mellan partitioner, justera partitionsstorlekar eller ändra partitioneringsvillkoren.

Kompromiss: Partitionering ökar komplexiteten i utformningen och utvecklingen av en arbetsbelastning. Partitionering kräver konversationer och planering mellan utvecklare och databasadministratörer.

Risk: Partitionering medför vissa potentiella problem som måste beaktas och åtgärdas, inklusive:

  • Datasnedvridning: Partitionering kan leda till datasnedvridning, där vissa partitioner får en oproportionerlig mängd data eller arbetsbelastning jämfört med andra. Datasnedvridning kan leda till obalanser i prestanda och ökad konkurrens på specifika partitioner.

  • Frågeprestanda: Dåligt utformade partitioneringsscheman kan påverka frågeprestanda negativt. Om frågor behöver komma åt data över flera partitioner kan det kräva extra samordning och kommunikation mellan partitioner, vilket leder till ökad svarstid.

Azure-underlättande

Optimera skalning. Azure har infrastrukturkapaciteten för vertikal och horisontell skalning. Azure-tjänster har olika prestandanivåer som kallas SKU:er. Med SKU:er kan du skala lodrätt. Många av Azures resurser stöder automatisk skalning eller andra skalningsalternativ på plats. Vissa resurser stöder avancerade mått eller anpassade indata för att stödja finjustering av skalningsbeteende. De flesta skalningsimplementeringar i Azure kan ange gränser och stödja den observerbarhet som krävs för att aviseras om att ändras.

Med Azure Monitor kan du övervaka olika mått och villkor i dina program och infrastruktur. Du kan använda Monitor för att utlösa automatiserade skalningsåtgärder baserat på fördefinierade regler. I Azure Kubernetes Service (AKS) kan du till exempel använda Monitor för att aktivera horisontell automatisk skalning av poddar (HPA) och automatisk skalning av kluster. Med hjälp av monitorns övervaknings- och aviseringsfunktioner kan du effektivt underlätta skalning i Azure och se till att dina program och infrastruktur kan anpassas dynamiskt för att möta efterfrågan.

Du kan också skapa anpassad automatisk skalning i Azure. Du kan använda aviseringar i Övervaka för resurser som inte har någon autoskalningsfunktion. Dessa aviseringar kan konfigureras så att de är frågebaserade eller måttbaserade och kan utföra åtgärder med hjälp av Azure Automation. Automation tillhandahåller en plattform för att vara värd för och köra PowerShell- och Python-kod i Azure, molnet och lokala miljöer. Den erbjuder funktioner som att distribuera runbooks på begäran eller enligt ett schema, körningshistorik och loggning, integrerat hemlighetslager och källkontrollintegrering.

Utforma program att skala: Här är några sätt som Azure underlättar designen av programskalning.

  • Eliminerar datalåsning: I Azure SQL Database kan du aktivera optimerad låsning för att förbättra prestanda för databaser som kräver strikt konsekvens.

  • Använda bakgrundsuppgifter: Azure erbjuder tjänster och vägledning för att implementera bakgrundsjobb. Mer information finns i Bakgrundsjobb.

  • Implementera belastningsutjämning: Azure tillhandahåller lastbalanserare som inte kräver klienttillhörighet. Dessa lastbalanserare omfattar Azure Front Door, Azure Application Gateway och Azure Load Balancer.

Partitionering av en arbetsbelastning: Azure erbjuder olika partitioneringsstrategier för olika datalager. Dessa strategier hjälper till att förbättra prestanda och skalbarhet genom att distribuera data över flera partitioner. Mer information finns i Strategier för datapartition.

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.