Mam pytanie dotyczące ładowania gniazd sieciowych.
Mam serwer obsługujący gniazda sieciowe. Przeglądarki łączą się z moją witryną i każda z nich otwiera gniazdo sieciowe www.mydomain.com
. W ten sposób moja aplikacja społecznościowa może przesyłać wiadomości do klientów.
Tradycyjnie, używając tylko żądań HTTP, zwiększałbym skalę, dodając drugi serwer i moduł równoważenia obciążenia przed dwoma serwerami internetowymi.
W przypadku gniazd sieciowych połączenie musi być bezpośrednio z serwerem WWW, a nie z load balancerem, ponieważ jeśli maszyna ma fizyczny limit powiedzmy 64k otwartych portów, a klienci łączyli się z load balancerem, to nie mogłem obsługiwać ponad 64 tys. jednoczesnych użytkowników.
Więc jak ja -
sprawić, aby klient łączył się bezpośrednio z serwerem WWW (zamiast z systemem równoważenia obciążenia), gdy strona się ładuje? Czy po prostu ładuję JavaScript z węzła, a moduły równoważenia obciążenia (lub cokolwiek innego) losowo modyfikują adres URL skryptu za każdym razem, gdy strona jest początkowo żądana?
poradzić sobie z falowaniem startu? Przeglądarka zauważy, że połączenie jest zamykane po wyłączeniu serwera WWW. Potrafię napisać kod JavaScript, aby spróbować ponownie otworzyć połączenie, ale węzeł zniknie na chwilę. Więc myślę, że musiałbym wrócić do modułu równoważenia obciążenia, aby zapytać o adres następnego węzła do użycia?
Zastanawiałem się, czy moduły równoważenia obciążenia wysyłają przekierowanie przy początkowym żądaniu, tak aby przeglądarka początkowo żądała
www.mydomain.com
i była przekierowywanawww34.mydomain.com
. Działa to całkiem dobrze, dopóki węzeł nie ulegnie awarii - a witryny takie jak Facebook tego nie robią. Jak oni to robią?