asp.net - Hvornår skal du bruge belastningsbalancering?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kommer bare ind i de mere indviklede dele af webudvikling. Dette er måske ikke det bedste sted. Men hvornår er det bedst at få belastningsbalancering til et webprojekt? Jeg forstår, at det afhænger af godt design/dårligt design med hensyn til hvor mange brugere du kan komme til at besøge et websted uden at det virkelig udfører ydeevnen. Men jeg planlægger at kode et nyt projekt, der potentielt kunne have mange brugere, og jeg spekulerede på, om jeg skulle tænke på bat om belastningsbalancering. Udtalelser velkommen; tak på forhånd!


Jeg skal ikke også at projektet sandsynligvis vil være asp.net (webforms eller mvc endnu ikke besluttet) med backend af mongodb eller pgsql (igen stadig afgørende).

Bedste reference


Lastbalancering kan også være en form for høj tilgængelighed. Hvad hvis din webserver går ned? Det kan tage lang tid at erstatte det.


Generelt, når du skal tænke på gennemstrømning, er du allerede rig, fordi du har en enorm mængde brugere.


Stackoverflow serverer 10m unikke brugere om måneden med et par servere (6 eller deromkring). Tænk på, hvor mange anmodninger du havde om dagen, hvis du konstant genererede 10 HTTP-svar pr. Sekund i 8 varme timer: 10 * 3600 * 8=288000 sidevisninger pr. Dag. Du vandt 't har så mange brugere snart.


Og hvis du gør det, optimerer du din app til 20 anmodninger pr. Sekund og CPU-kerne, hvilket betyder at du får 80 forespørgsler pr. Sekund på en vareserver. Det er meget .


Det er normalt nemt at tilføje en lastbalancer senere. LB'er kan mærke hver bruger med en cookie, så de bliver fastgjort til et bestemt mål. Din app vil ikke bemærke forskellen. Som regel.

Andre referencer 1


Er dette til et e-handelssite? Hvis det er tilfældet, så er det rigtige spørgsmål at spørge 'for hver time, hvor webstedet er nede, hvor mange penge taber du?' Hvis dette tal er stort, ville jeg gøre belastningsbalancering en prioritet.


En af de mere vigtige arkitekturbeslutninger, jeg har set, har betydning for dette, er brugen af ​​session variabler. Du skal kunne levere en problemfri oplevelse, hvis din bruger slutter på forskellige servere under deres besøg. Session variabler vandt 't overføre fra server til server, så jeg ville undgå at bruge dem.


Jeg støtter en sådan løsning på arbejdet. Vi kører fire (bruges til otte) .NET e-handelswebsites på tre Windows 2k8-servere (understøttet af to primære/sekundære SQL Server 2008-databaser) og tager et sted omkring 1300 (kombinerede) ordrer pr. Dag. Hvert websted er afbalanceret og holdes 'i gården' af en levende. Det gode ved dette er, at vi kan tage en server ned til vedligeholdelse uden at brugerne virkelig bemærker noget. Når vi tager det tilbage, genaktiverer vi vores replikeringstjeneste, og vores ændringer bliver skubbet ud til de to andre servere ret hurtigt.


Så ja, jeg vil anbefale at give en løsning som sådan nogle tanker.

Andre referencer 2


Parametrene her, der kan påvirke den ene og den anden og sænke ydeevnen er.



  • Båndbredde

  • Forarbejdning

  • Synkroniser



Har at gøre med hvor mange brugere du har sammen med det medie, du vandt at tjene .


Så hvis du skal tjene mange video/filer til at levere, har du brug for mange servere til at levere det. Lad os sige, at du ikke har, hvad er det næste, der skal tjekke, brugerne og behandlingen.


Fra min erfaring Hvad er langsomt, er behandlingen låsning af sessionen . Så et stort skridt for at fremskynde behandlingen er at lave en samlet brugerdefineret sessionhåndtering, og din side vil ikke låse den ene og den anden, og du kan håndtere udproblemer for mange brugere.


Nu for næste trin lad os sige, at du har en database, der holder alle dataene, for at få ud af en belastningsbalance, og mange computere er tricket til at lave lokal cache af, hvad du vil vise.


Så ideen er faktisk at undgå for meget låsning, der får brugerne til at vente på den anden, og den anden ide er at have en lokal cache på hver anden computer, der bliver dynamisk ud fra hoveddatabase data.


ref:
Webapp blokeret under behandling af en anden webapp ved deling af samme session


Udskiftning af ASP.Net sessions helt


kalder aspx side for at returnere et billede tilfældigt langsomt


Altid online



Endnu en parameter er, at du kan lave en løsning, der kan håndtere en server til alle, og alt for en :) stil, hvor du faktisk kan bruge flere servere til backup årsag. Så hvis en server går af en eller anden grund (f.eks. Til opdatering og genstart), kan resten stadig arbejde og tjene.

Andre referencer 3


Som du sagde, afhænger det af, om/når belastningen skal afbalanceres. Det afhænger af ydeevne og hvor mange brugere du vil tjene. LB forbedrer også pålideligheden af ​​din app - den stopper ikke, når et system går ned. Hvis du kan se dit projekt vokse til at være rigtig stort og tjene mange brugere, ville jeg sørge for at designe din ansøgning for at kunne opgraderes til LB, så gør ikke noget som ikke er standard. Prøv at styre væk fra hjemmelavede løsninger og følg altid god praksis. Hvis du senere har brug for LB, skal det ikke være nødvendigt at ændre din app.


UPDATE


Du skal muligvis tænke fremad, men ikke på bekostning af at komplicere din ansøgning for meget. Gå ikke paranoid og forberede alt til at arbejde lyn hurtigt 'bare i tilfælde'. Du skal f.eks. Ikke bekymre dig om sessioner - session management kan nemt flyttes til SQL Server til enhver tid, og dette er vejen at gå med LB. Caching hjælper også, hvis du rammer nogle flaskehalser i fremtiden, men du behøver ikke at implementere det med det samme - godt design (stabile grænseflader), adskillelse og afkobling gør det muligt at tilføje cachen senere. Så igen - hold dig til god praksis, lukk ikke dørene, men åbner heller ikke dem alle med det samme.


Du kan finde denne artikel interessant. [4]