Die Skalierung des Wachstums einer Anwendung ist heutzutage ein wirklich einschüchterndes Thema. Die meisten Internetressourcen und Blogbeiträge drehen sich um die Skalierung von Ruby-Anwendungen. Es ist sehr interessant zu wissen, was die Obergrenze ist und wie viel Ruby on Rails für das schnelle Wachstum von Anwendungen erreichen kann.
Skalierung erhöht nicht die Geschwindigkeit, sondern den Durchsatz
Die Skalierung von Hosts beschleunigt die Antwortzeiten nur dann, wenn Anfragen lange darauf warten, von Anwendungen bedient zu werden. Wenn es keine Anfragen gibt, die auf ihre Bearbeitung warten, ist die Skalierung reine Geldverschwendung.
Ruby on Rails skaliert Anwendungen korrekt von einer bis zu 1.000 Anfragen pro Minute, und das Wesentliche, das wir über diesen Skalierungsprozess wissen müssen, ist die Menge, mit der HTTP-Routing und Anwendungsserver tatsächlich arbeiten.
Wie werden die Anfragen an die App-Server weitergeleitet?
Eine wichtige Entscheidung bei der Skalierung einer Webanwendung mit Ruby ist die Wahl des Anwendungsservers. Die meisten Beiträge zur Skalierung von Ruby sind aufgrund der dramatischen Veränderungen in den letzten 5 Jahren und der stürmischen Veränderungen im letzten Jahr vielleicht schon veraltet. Nichtsdestotrotz verstehen wir immer noch die bestehenden Vorteile jedes Anwendungsservers. Wir müssen nur besser wissen, wie diese Anfragen an solche Anwendungsserver weitergeleitet werden. Viele Entwickler haben immer noch wenig Verständnis für den genauen Prozess, wie diese Anfragen in die Warteschlange gestellt und weitergeleitet werden.
Lebenszyklus von Anträgen
Sobald eine Anfrage bei Ihrer Heroku-Anwendung ankommt, ist der erste Ort, an dem sie stoppt, der Load Balancer. Die Aufgabe eines Load Balancers ist es, sicherzustellen, dass die Last zwischen den Routern von Heroku gleichmäßig verteilt wird. Dieser Load Balancer leitet die Anfrage an den Router weiter, der am besten für sie geeignet ist.
Es gibt eine enorme Anzahl nicht veröffentlichter Heroku-Router, und wir können davon ausgehen, dass die Zahl ziemlich groß ist, etwa über 100. Die Aufgabe der Router besteht darin, die Dynos der Anwendung zu erkennen und die Anfrage an einen bestimmten Dyno weiterzuleiten. Es kann ein bis fünf Minuten dauern, bis die Dynos gefunden sind, und die Router versuchen, eine Verbindung zu einem zufälligen Dyno in der Anwendung herzustellen. Wenn Heroku bereits ein zufälliges Dyno ausgewählt hat, wartet es fünf Sekunden lang, bis das Dyno die Anfrage annimmt und eine offene Verbindung herstellt. Während die Anfrage wartet, wird sie in die Warteschlange der Router-Anfragen gestellt.
Auswahl an Anwendungsservern
- Webrick
- Dünn
- Einhorn
- Phusion Passenger 5
- Puma (mit Gewinde)
- Puma (geclustert)
Abonnieren Sie die neuesten Updates
zusammenhängende Posts