Chcę poznać różnicę między sesjami lepkimi i nielepkimi. Co zrozumiałam po przeczytaniu z Internetu:Sesje Sticky i Non-Sticky
Przyklejony: pojawi się tylko jeden obiekt sesji.
nielepiący sesja: Sesja obiektu dla każdego węzła serwera
Chcę poznać różnicę między sesjami lepkimi i nielepkimi. Co zrozumiałam po przeczytaniu z Internetu:Sesje Sticky i Non-Sticky
Przyklejony: pojawi się tylko jeden obiekt sesji.
nielepiący sesja: Sesja obiektu dla każdego węzła serwera
Gdy strona jest obsługiwane przez tylko 1 web server
, dla każdej pary, obiekt sesji tworzony jest i pozostaje w pamięci serwera. Wszystkie żądania od klienta przechodzą na ten serwer sieciowy i aktualizują ten obiekt sesji. Jeśli niektóre dane muszą być przechowywane w obiekcie sesji w okresie interakcji, są przechowywane w tym obiekcie sesji i pozostają tam tak długo, jak długo sesja istnieje.
Jeśli jednak Twoja strona internetowa obsługiwana jest przez multiple web servers
, która jest obsługiwana przez load balancer
, moduł równoważenia obciążenia decyduje, który faktyczny (fizyczny) serwer WWW powinien przejść do każdego żądania. Na przykład, jeśli za równoważnikiem obciążenia znajdują się 3 serwery internetowe A, B i C, możliwe jest, że witryna www.mywebsite.com/index.jsp jest obsługiwana z serwera A, witryna www.mywebsite.com/login.jsp jest obsługiwana z serwera B i www.mywebsite.com/accoutdetails.php są obsługiwane z serwera C.
Teraz, jeśli żądania są obsługiwane z (fizycznie) 3 różnych serwerów, każdy serwer utworzył obiekt sesji dla ciebie i ponieważ ta sesja obiekty siedzą na 3 niezależnych skrzynkach, nie ma bezpośredniego sposobu na to, aby wiedzieć, co jest w obiekcie sesji drugiego. Aby zsynchronizować te sesje serwera, konieczne może być zapisanie/odczytanie danych sesji w warstwie wspólnej dla wszystkich - np. DB. Teraz zapisywanie i odczytywanie danych do/z bazy danych dla tego przypadku użycia może nie być dobrym pomysłem. Teraz przychodzi rola sesji klejącej. Jeśli instrukcja load balancer
zostanie poproszona o użycie sesji lepkich, wszystkie interakcje pojawią się z the same physical server
, nawet jeśli obecne są inne serwery. W ten sposób obiekt sesji będzie taki sam podczas całej interakcji z tą witryną.
Podsumowując, w przypadku sesji lepkich wszystkie twoje żądania będą kierowane do tego samego fizycznego serwera internetowego, podczas gdy w przypadku nielepnego loadbalancera można wybrać dowolny serwer WWW, który będzie obsługiwał twoje żądania.
Jako przykład, można przeczytać o Elastic równoważenia obciążenia Amazona i sesjach lepkich tutaj: http://aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-sessions.html
Zrobiłem odpowiedź z trochę więcej szczegółów tutaj: https://stackoverflow.com/a/11045462/592477
Albo można go odczytać tam ==>
Podczas korzystania z loadbalancingu oznacza to, że masz kilka instancji tomcat i musisz podzielić obciążenia.
@ TJ- co się stanie, jeśli jeden węzeł będzie niedostępny? – gstackoverflow
W większości przypadków sesja zostanie utracona. W przypadku [AWS ESB] (http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html) _Jeśli wystąpienie nie powiedzie się lub stanie się niezdrowe, moduł równoważący obciążenie przerywa żądanie kierowania do tego instancja zamiast tego wybiera nową, zdrową instancję opartą na istniejącym algorytmie równoważenia obciążenia. System równoważenia obciążenia traktuje sesję jako "zablokowaną" dla nowej, zdrowej instancji i kontynuuje wysyłanie żądań do tej instancji, nawet jeśli nieudane wystąpienie wróci. –
Według jakich informacji LoadBalancer sprawia, że sesja HTTP jest lepka? Zwłaszcza w przypadku połączeń HTTPS ten problem staje się interesujący. Czy karmisz LB kluczem prywatnym serwerów sieciowych, aby mógł rozdzielić połączenie SSL i pobrać sesję HTTP? A może LB korzysta po prostu z adresu IP klienta? W takim przypadku, co z serwerem proxy, na którym wielu klientów używa tego samego adresu IP? Albo jeszcze gorzej, klienci mobilni, gdzie adres IP często się zmienia? A może jest nawet lepsza technika? Dzięki – g000ze