Optimera för hög samtidighet med Azure Data Explorer
Hög samtidiga program behövs i scenarier med en stor användarbas, där programmet samtidigt hanterar många begäranden med låg svarstid och högt dataflöde.
Användningsfall omfattar storskaliga instrumentpaneler för övervakning och avisering. Exempel är Microsofts produkter och tjänster som Azure Monitor, Azure Time Series Insights och Playfab. Alla dessa tjänster använder Azure Data Explorer för att hantera arbetsbelastningar med hög samtidighet. Azure Data Explorer är en snabb, fullständigt hanterad stordataanalystjänst för realtidsanalys på stora mängder dataströmning från program, webbplatser, IoT-enheter med mera.
Anteckning
Det faktiska antalet frågor som kan köras samtidigt i ett kluster beror på faktorer som kluster-SKU, datavolymer, frågekomplexitet och användningsmönster.
Om du vill konfigurera för program med hög samtidighet utformar du serverdelsarkitekturen på följande sätt:
- Optimera data
- Ange ett leader-follower-arkitekturmönster
- Optimera frågor
- Ange klusterprinciper
- Övervaka Azure Data Explorer-kluster
Den här artikeln innehåller rekommendationer för vart och ett av de föregående ämnena som du kan implementera för att uppnå hög samtidighet på ett optimalt och kostnadseffektivt sätt. Dessa funktioner kan användas ensamt eller i kombination.
Optimera data
För hög samtidighet bör frågor använda minsta möjliga mängd CPU-resurser. Du kan använda någon eller alla av följande metoder:
Använd metodtips för tabellschemadesign
Använd följande förslag på tabellschemadesign för att minimera de CPU-resurser som används:
- ID-kolumner bör definieras som strängdatatyper oavsett om värdena är numeriska. Indexering för strängkolumner är mer avancerat än för numeriska kolumner och ger bättre filtreringsprestanda.
- Matcha kolumndatatypen optimalt med de faktiska data som lagras i dessa kolumner. Lagra till exempel inte datetime-värden i en strängkolumn.
- Undvik en stor gles tabell med många kolumner och använd dynamiska kolumner för att lagra glesa egenskaper.
- Lagra egenskaper som används ofta i sin egen kolumn med en icke-dynamisk datatyp.
- Avormalisera data för att undvika kopplingar som kräver relativt stora CPU-resurser.
Partitionera data
Data lagras i form av omfattningar (datashards) och partitioneras som standard efter inmatningstid. Du kan använda partitioneringsprincipen för att partitionera om omfattningarna baserat på en enskild strängkolumn eller en enda datetime-kolumn i en bakgrundsprocess. Partitionering kan ge betydande prestandaförbättringar när de flesta frågor använder partitionsnycklar för att filtrera, aggregera eller båda.
Anteckning
Själva partitioneringsprocessen använder CPU-resurser. Cpu-minskningen under frågetiden bör dock uppväga den CPU som används för partitionering.
Föraggregera dina data med materialiserade vyer
Föraggregera dina data för att avsevärt minska CPU-resurser under frågetiden. Exempelscenarier är att sammanfatta datapunkter över ett minskat antal tidsintervall, behålla den senaste posten för en viss post eller deduplicera datauppsättningen. Använd materialiserade vyer för en lättkonfigurerad aggregerad vy över källtabeller. Den här funktionen förenklar arbetet med att skapa och underhålla dessa aggregerade vyer.
Anteckning
I bakgrundsaggregeringsprocessen används PROCESSOR-resurser. Cpu-minskningen under frågetiden bör dock uppväga CPU-förbrukningen för aggregering.
Konfigurera cachelagringsprincipen
Konfigurera cachelagringsprincipen så att frågor körs på data som lagras i frekvent lagring, även kallat diskcachen. Kör endast begränsade, noggrant utformade scenarier på tabeller med kall lagring eller extern lagring.
Ange ett leader-follower-arkitekturmönster
Följande databas är en funktion som följer en databas eller en uppsättning tabeller i en databas från ett annat kluster som finns i samma region. Den här funktionen exponeras via Azure Data Share, Azure Resource Manager API:er och en uppsättning klusterkommandon.
Använd leader-follower-mönstret för att ange beräkningsresurser för olika arbetsbelastningar. Du kan till exempel konfigurera ett kluster för inmatningar, ett kluster för att fråga eller hantera instrumentpaneler eller program och ett kluster som hanterar datavetenskapsarbetsbelastningarna. Varje arbetsbelastning i det här fallet har dedikerade beräkningsresurser som kan skalas separat och olika cachelagrings- och säkerhetskonfigurationer. Alla kluster använder samma data, där ledaren skriver data och följarna använder dem i skrivskyddat läge.
Anteckning
Uppföljningsdatabaser har en fördröjning från ledaren, vanligtvis några sekunder. Om din lösning kräver de senaste data utan svarstid kan den här lösningen vara användbar. Använd en vy i uppföljningsklustret som samlar in data från ledaren och följaren och frågar efter de senaste data från ledaren och resten av data från följaren.
För att förbättra prestandan för frågor i uppföljningsklustret kan du aktivera konfiguration av prefetch-omfattningar. Använd den här konfigurationen noggrant eftersom det kan påverka färskheten hos data i efterföljardatabasen.
Optimera frågor
Använd följande metoder för att optimera dina frågor för hög samtidighet.
Följ bästa praxis för frågor så att dina frågor är så effektiva som möjligt.
Använda en cache för frågeresultat
När fler än en användare läser in samma instrumentpanel vid en liknande tidpunkt kan instrumentpanelen till den andra och följande användare hanteras från cachen. Den här konfigurationen ger höga prestanda med nästan ingen CPU-användning. Använd cachefunktionen för frågeresultat och skicka cachekonfiguration för frågeresultat med frågan med hjälp av -instruktionen set
.
Grafana innehåller en konfigurationsinställning för frågeresultatets cacheminne på datakällnivå, så alla instrumentpaneler använder den här inställningen som standard och behöver inte ändra frågan.
Konfigurera frågekonsekvens
Standardläget för frågekonsekvens är starkt. I det här läget hanterar en administratörsnod metadata och inmatning för klustret, samt frågeplanering och delegering av körning till andra noder.
I program med hög samtidighet kan hantering av frågor orsaka att administratörsnodens CPU-användning är hög, medan andra noder är mindre upptagna. Detta kan orsaka en flaskhals där antalet samtidiga frågor inte kan växa. Detta kanske dock inte visas i klustrets CPU-rapport (Azure Portal > {your_cluster} > mått > för CPU-mått) som visar den genomsnittliga CPU-användningen för klustret.
I det här scenariot rekommenderar vi att du använder svagt konsekvensläge. I det här läget kan fler noder hantera frågor, vilket gör det möjligt att vågrätt skala antalet samtidiga frågor. Noder i det här läget uppdaterar regelbundet sin kopia av metadata och nyligen inmatade data, vilket leder till en svarstid på vanligtvis mindre än en minut när data synkroniseras. Den här korta svarstiden är dock att föredra framför flaskhalsen som kan uppstå när du använder starkt konsekvensläge.
Du kan ange konsekvensläget i en arbetsbelastningsgruppsfrågekonsekvensprincip, i egenskaperna för klientbegäran eller i grafana-datakällans konfiguration.
Ange klusterprinciper
Antalet samtidiga begäranden begränsas som standard och styrs av principen för hastighetsbegränsning för begäran så att klustret inte överbelastas. Du kan justera den här principen för situationer med hög samtidighet. Den här principen bör endast justeras efter rigorös testning, helst på produktionsliknande användningsmönster och datauppsättningar. Testning säkerställer att klustret kan upprätthålla det ändrade värdet. Den här gränsen kan konfigureras baserat på programbehov.
Övervaka Azure Data Explorer-kluster
Genom att övervaka hälsotillståndet för dina klusterresurser kan du skapa en optimeringsplan med hjälp av de funktioner som föreslås i föregående avsnitt. Azure Monitor för Azure Data Explorer ger en omfattande vy över klustrets prestanda, åtgärder, användning och fel. Få insikter om frågornas prestanda, samtidiga frågor, begränsade frågor och olika andra mått genom att välja fliken Insikter (förhandsversion) under avsnittet Övervakning i Azure Data Explorer-klustret i Azure Portal.
Information om övervakningskluster finns i Azure Monitor för Azure Data Explorer. Information om enskilda mått finns i Azure Data Explorer mått.