Moja sytuacja polega na tym, że obecnie piszemy aplikację online, która korzysta z Node.js po stronie serwera z detektorem WebSocket. Mamy dwie różne części: jedna obsługuje strony i używa node.js i express + ejs, druga to zupełnie inna aplikacja, która zawiera tylko bibliotekę socket.io dla websockets. Tak więc, oto kwestia skalowalności części websocket.Oparte na plikach cookie równoważenie obciążenia dla WebSockets?
Jednym z rozwiązań, które znaleźliśmy, jest użycie informacji redis i współdzielenie gniazd między serwerami, ale ze względu na architekturę będzie wymagać współdzielenia wielu innych informacji, co spowoduje ogromne obciążenie serwerów.
Po tym wstępie moje pytanie brzmi - czy możliwe jest użycie równoważenia obciążenia opartego na plikach cookie na stronach internetowych? Dzięki temu możemy powiedzieć, że każde połączenie użytkownika z serwerem cookie = serwer1 będzie zawsze przekazywane do serwera1, a każde połączenie z serwerem plików cookie = serwer2 będzie fw na serwer2, a połączenie z takim plikiem cookie nie będzie na najmniej obciążonym serwerze.
AKTUALIZACJA: Jak jedna "odpowiedź" mówi - tak, wiem, że to istnieje. Po prostu nie pamiętam, że nazwa to lepka sesja. Ale pytanie brzmi - czy to zadziała dla stron internetowych? Czy są jakieś możliwe komplikacje?
To pytanie również mnie bardzo interesuje, tylko nie widzę problemu z równoważeniem obciążenia połączeń przychodzących z przeglądarek (po prostu uderzy w jeden z serwerów i pozostanie przy nim), bardziej interesuje mnie, jak właściwie naciskasz na te serwery z twojego zaplecza. Podobnie jak mam serwer zaplecza, który wykonuje rzeczywistą pracę, a następnie będzie przekazywał wiadomości do serwera Websockets za pośrednictwem gniazda - skąd mam wiedzieć, do którego z nich użyć, jeśli mam klaster? Moim aktualnym pomysłem jest po prostu utrzymywanie listy wszystkich otwartych połączeń gdzieś w centralnej bazie danych, nie wiem, czy to najlepszy sposób, aby przejść. – KOHb
@KOHb Nie mam żadnego dodatkowego zaplecza za serwerami gniazd. W moim przypadku jest to o wiele prostsze. Ale z tego, co mówisz, chciałbym wypróbować serwer Redis w tym celu. – AlexKey