Plusy i minusy Sticky sesji / sesji Affinity load blancing strategii?

Jednym z podejść do wysokiej skalowalności jest wykorzystanie równoważenia obciążenia sieci do podziału obciążenia między kilka serwerów.

Jednym z wyzwań, jakie stawia to podejście, jest sytuacja, w której serwery są świadome stanu-przechowywanie stanu użytkownika w "sesji".

Jednym z rozwiązań tego problemu jest "sticky session" (aka "powinowactwo do sesji"), gdzie każdy użytkownik jest przypisany do jednego serwera, a jego dane o stanie są zawarte na tym serwerze wyłącznie przez cały czas trwania sesja.

Jakie są plusy i minusy podejścia "sticky session"? Czy używasz go i jeśli tak, czy jesteś z niego zadowolony?

Author: Kemal Fadillah, 2009-10-12

1 answers

Plusy:

  • to proste - żadne zmiany aplikacji nie są wymagane.
  • Lepiej wykorzystuje lokalne pamięci podręczne RAM (np. raz wyszukuje profil użytkownika, buforuje go i może ponownie użyć podczas kolejnych wizyt tego samego użytkownika)]}

Wady:

  • jeśli serwer przestanie działać, sesja zostanie utracona. (zauważ, że jest to przekręt polegający na przechowywaniu informacji o sesji lokalnie na serwerze WWW-a nie o sticky sessions per se). jeśli to, co w sesji jest naprawdę ważne dla użytkownika (np. szkic e-mail) lub na stronę (np. koszyk) wtedy utrata jednego z serwerów może być bardzo bolesna.
  • w zależności od implementacji "sticky" w load balancer, może przekierować nierówne obciążenie na niektóre serwery w porównaniu z innymi]}
  • Uruchomienie nowego serwera nie powoduje natychmiastowego obciążenia nowego serwera - jeśli masz dynamiczny system równoważenia obciążenia, który radzi sobie ze skokami, lepkość może spowolnić Twoją zdolność szybkiego reagowania na skok. To powiedziawszy, jest to nieco narożna sprawa i naprawdę dotyczy tylko bardzo dużych i zaawansowanych witryn.
  • Jeśli masz relatywnie niewielu użytkowników, ale ruch pojedynczego użytkownika może przerzucić jeden serwer (np. złożone strony z SSL, AJAX, dynamicznie generowane obrazy, dynamiczna kompresja itp.), a następnie stickines może zaszkodzić czas reakcji użytkownika końcowego, ponieważ nie jesteś rozłożenie obciążenia pojedynczego użytkownika równomiernie na serwerach. Jeśli masz wielu jednoczesnych użytkowników,nie jest to problemem, ponieważ wszystkie twoje serwery będą zawalone!

Ale jeśli musisz użyć server - local session state, sticky sessions to zdecydowanie najlepszy sposób - i nawet jeśli nie używasz server-local session state, lepkość ma zalety, jeśli chodzi o wykorzystanie pamięci podręcznej(patrz wyżej). Twój load balancer powinien mieć możliwość sprawdzania plików cookie HTTP (nie tylko adresu IP) w celu określenia lepkości, ponieważ adresy IP mogą się zmieniać podczas jednej sesji (np. dokowanie laptopa między siecią przewodową i bezprzewodową).

Jeszcze lepiej, nie używaj stanu sesji na serwerze WWW w ogóle! Jeśli stan sesji jest bardzo bolesny do utraty (np. koszyki), przechowuj go w centralnej bazie danych i okresowo usuwaj stare sesje. Jeśli stan sesji nie jest krytyczny (np. nazwa użytkownika/adres URL awatara), to wklej go do pliku cookie-upewnij się, że nie wpychasz zbyt wielu danych do pliku cookie.

Nowoczesne wersje Rails domyślnie przechowują zmienne sesji w pliku cookie z powyższych powodów. Inne frameworki internetowe mogą mieć opcję" przechowuj w pliku cookie "i / lub" przechowuj w DB".

 64
Author: Justin Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-12 23:34:40