Att skala tillväxten av en app har varit ett riktigt skrämmande ämne nuförtiden. De flesta av internetresurserna och blogginläggen kretsar kring skalning av Ruby-applikationer. Det är mycket intressant att veta vad som är taket och hur mycket Ruby on Rails kan uppnå för den snabba tillväxten av applikationer.
Skalningen ökar inte med hastighet utan genomströmning
Skalningsvärdar påskyndar bara svarstiderna när förfrågningar har spenderat mycket tid på att vänta på att bli betjänade av applikationer. Om det inte finns några befintliga förfrågningar som väntar på service, blir skalning bara ett slöseri med pengar. Ruby on Rails skalar applikationer korrekt från 1 upp till 1 000 förfrågningar per minut och det viktiga vi behöver veta om denna skalningsprocess är hur mycket HTTP-routing och applikationsservrar faktiskt fungerar.
Hur dirigeras förfrågningar till appservrar?
Ett viktigt beslut att fatta när det gäller att skala en webbapplikation med Ruby är vilken typ av applikationsserver du behöver välja. De flesta av Rubys skalningsinlägg kan vara föråldrade på grund av den dramatiska förändringen som hänt de senaste 5 åren och förra årets virvelvindsförändring. Ändå förstår vi fortfarande de befintliga fördelarna med varje val av applikationsserver. Vi måste bara vara mer kunniga om hur dessa förfrågningar dirigeras till sådana applikationsservrar. Många utvecklare har fortfarande liten förståelse för den exakta processen för hur dessa förfrågningar köas och dirigeras.
Livscykel för förfrågningar
När en förfrågan kommer till din Heroku-app, är den första platsen den stoppar lastbalanseraren. En lastbalanserares uppgift är att se till att belastningen mellan Herokus routrar fördelas jämnt. Denna belastningsutjämnare skickar förfrågan vidare till någon av routern som är bäst för den. Det finns ett enormt antal hemliga Heroku-routrar och vi kan anta att antalet är ganska stort, ungefär över 100. Routrarnas uppgift är till dynos i applikationen och skickar begäran till en viss dyno. Det kan ta en till fem minuter att lokalisera dynos och routrarna kommer att försöka ansluta till en slumpmässig dyno i applikationen. När Heroku redan har valt en slumpmässig dyno, väntar den i fem sekunder på att dynon ska göra anspråk på begäran och upprätta en öppen anslutning. När förfrågan väntar kommer den att placeras i kön av routerns förfrågningar.
Applikationsserverval
- Webrick
- Tunn
- Enhörning
- Phusion Passenger 5
- Puma (gängad)
- Puma (klustrad)
Prenumerera för de senaste uppdateringarna
relaterade inlägg