2012-03-30 7 views
1

Ich wurde im Interview gefragt und wirklich auf Antwort für unten Frage verwirrt.Load Balancer arbeiten für beliebte Websites

Wenn eine Site 500 Anfragen pro Sekunde erhält und der Mechanismus, mit dem sie eine große Anzahl von Treffern löst, Load Balancer ist.

Im obigen Fall wird die gesamte Anfrage zuerst an Load Balancer gesendet, dann ist Load Balancer dafür verantwortlich, die Anfrage an den tatsächlichen Server zu übergeben, der die Antwort gibt.

So Load Balancer ist der Einstiegspunkt für alle Anfrage und es auch einige Kapazität, um die Anfrage zu behandeln? Also wie viel Anfrage Load Balancer akzeptieren kann und ob es bis zu einem bestimmten Limit akzeptiert, wie funktioniert das System in diesem Fall?

Es tut mir leid, wenn meine Frage bedeutungslos ist, bitte erklären?

Danke.

+0

Fragen Sie, warum Load Balancer die Verarbeitung von mehr Datenverkehr ermöglichen oder die Kapazität eines Load Balancers übersteigen? – mellamokb

Antwort

2

Ein Load Balancer führt normalerweise einen leichten ereignisbasierten HTTP-Server (z. B. NginX) aus, der für jede eingehende Anforderung eine Verbindung zu einem Backend-Server aufrechterhält.

Eine beliebte Einrichtung ist:

NginX 
|  \ 
|  \ 
Apache Apache ... 

Seit nginx viel mehr Verbindungen verarbeiten kann und ein ziemlich vorhersehbar Speichernutzungsmuster, es in der Regel als Frontend für mehr Apache Backend-Server (mit PHP verwendet werden kann, Python, Ruby usw.).

Ersetzen Sie Apache mit Tomcat/Jetty/Fügen Sie Ihren bevorzugten Servlet Container hier und die gleiche Logik gilt.

Der Hauptpunkt hier ist, dass Ihre Back-End-Server in der Regel etwas viel zeitaufwendiger (Ausführen einer Skriptsprache, Abfragen einer Datenbank usw.), dass es mehr als wahrscheinlich ist, dass jeder Back-End-Server nicht durch HTTP blockiert wird Server-Komponente, sondern durch die Anwendungslogik.

Es gibt keine einheitliche Lösung für diese Art von Problemen. Eine andere Lösung (von vielen) besteht darin, DNS-Round-Robin zwischen mehreren Balancern zu verwenden, die mehrere Backend-Server unterstützen, sobald Sie die Kapazität einer einzelnen Load-Balancer-Maschine überschritten haben.

+0

Danke für Ihre Antwort .... Ihre Erklärung hat geholfen – Jayesh

0

Ich würde sagen, dass, wenn die Anzahl der Verbindungen bis zu den Grenzen des Load Balancer-Einstiegspunkts ansteigt, Sie einen DNS-Ebenenausgleich implementieren können (wenn die Namensauflösung in den Anfragen verwendet wird). Jede Anfrage wird aufgrund der DNS-Auflösung, die dafür verantwortlich ist, zwischen verschiedenen Auflösungen für den gleichen Namen in den Anfragen zu wechseln und diese Anfragen an verschiedene Load Balancer oder direkt an diese zu senden, an einen unterschiedlichen Einstiegspunkt gefahren (zB "round robined") verschiedene Server (letztere würde eine andere LB-Technik implizieren).

Aber die 500 Anfragen pro Sekunde sollten kein Problem für einen Server sein, der für den Ausgleich zuständig ist. HAProxy kann Tausende von Anfragen pro Sekunde ohne Probleme verarbeiten, unterschiedliche Sitzungen auf verschiedene Server übertragen oder auch aktive Sitzungen auf verschiedenen Servern verteilen.

HAProxy ist eine freie, sehr schnelle und zuverlässige Lösung hohe Verfügbarkeit, Lastverteilung und Proxying für TCP und HTTP-basierte Anwendungen. Es ist besonders geeignet für Webseiten, die unter sehr hohen Lasten crawlen, während Persistenz oder Layer7-Verarbeitung benötigt wird. Zehntausende von Verbindungen zu unterstützen ist mit heutiger Hardware natürlich realistisch.