Ich habe eine Frage zum Laden von Web-Sockets.
Ich habe einen Server, der Web-Sockets unterstützt. Browser stellen eine Verbindung zu meiner Website her und jeder öffnet einen Web-Socket für www.mydomain.com
. Auf diese Weise kann meine App für soziale Netzwerke Nachrichten an die Kunden senden.
Wenn ich nur HTTP-Anforderungen verwende, skaliere ich traditionell, indem ich einen zweiten Server und einen Load Balancer vor den beiden Webservern hinzufüge.
Bei Web-Sockets muss die Verbindung direkt mit dem Webserver erfolgen, nicht mit den Load Balancern. Wenn ein Computer ein physisches Limit von beispielsweise 64.000 offenen Ports hat und die Clients eine Verbindung zum Load Balancer herstellen, kann ich dies nicht unterstützen mehr als 64.000 gleichzeitige Benutzer.
Also wie mache ich -
den Client dazu bringen, beim Laden der Seite eine direkte Verbindung zum Webserver (und nicht zum Load Balancer) herzustellen? Lade ich einfach das JavaScript von einem Knoten und die Load Balancer (oder was auch immer) ändern die URL für das Skript zufällig jedes Mal, wenn die Seite zum ersten Mal angefordert wird?
einen Wellenstart bewältigen? Der Browser wird feststellen, dass die Verbindung geschlossen wird, wenn der Webserver heruntergefahren wird. Ich kann JavaScript-Code schreiben, um zu versuchen, die Verbindung wieder zu öffnen, aber der Knoten wird für eine Weile weg sein. Ich müsste also zum Load Balancer zurückkehren, um die Adresse des nächsten zu verwendenden Knotens abzufragen.
Ich habe mich gefragt, ob die Load Balancer bei der ersten Anforderung eine Umleitung senden, sodass der Browser zunächst eine Umleitung anfordert
www.mydomain.com
und zu dieser umgeleitet wirdwww34.mydomain.com
. Das funktioniert ganz gut, bis der Knoten ausfällt - und Websites wie Facebook tun das nicht. Wie machen Sie das?