Czy podczas projektowania architektury klient/serwer istnieje korzyść dla multipleksowania wielu połączeń WEBSOCKET z tego samego procesu do serwera (np. Dzielenie jednego połączenia) z otwarciem jednego połączenia Połączenie WEBSOCKET na wątek/sesję w kliencie (jak zwykle robi się przy łączeniu z serwerami memcached lub bazy danych).Projektowanie/architektura: gniazdo sieciowe jedno połączenie a wiele połączeń
Jestem świadomy obciążenia związanego z każdym połączeniem (np. RAM ...). Ale spodziewaj się mieć mniej niż 1K-10K co najwyżej po każdej stronie klienta.
Szczególny przypadek użycia: Załóżmy, mam zdalny serwer z wielu sesji na jednej stronie, a po drugiej stronie mam wielu klientów, każdy klient będzie podłączyć do innej sesji przez serwer websocket. Na zdalnym serwerze istnieją 2 sposoby jego implementacji: (1) każda sesja tworzy własne połączenie websocket (2) wszystkie sesje będą korzystały z tego samego połączenia websocket.
Z punktu widzenia połączenia, podoba mi się rozwiązanie do dzielenia się (jedno połączenie sieciowe do wszystkich sesji), ponieważ serwer websocket jest ograniczony przez # dostępnych połączeń (zapisywanie serwerów/skalowanie).
Jednak z punktu widzenia ruchu/prędkości danych/wydajności, jeśli sesje wyślą wiele małych pakietów przez połączenie, wtedy, jeśli używamy jednego połączenia udostępniania, nie będziemy w stanie wykorzystać przepustowości (ładunek. .../zbierz kilka małych pakietów w jeden lub podziel duży pakiet na małe pakiety), ponieważ może być konieczne wysyłanie różnych pakietów do różnych klientów z różnych sesji, w tym przypadku nie będziemy w stanie zebrać kilku pakietów (małe pakiety), ponieważ mają inny cel i pochodzą z różnych źródeł !!, chyba że stworzymy "połączenie wirtualne", które zarządza danymi każdej sesji, aby zmaksymalizować prędkość, ale to spowodowałoby dużą złożoność implementacji !!!
Jakieś inne opinie?
Dzięki, JB.
Dzięki Myst, rzeczywiście, istnieje wiele pytań do rozważenia, a rozwiązanie jest oparte na wymaganiu (co jest ważniejsze ...). – Joseph