1. Czym jest równoważenie obciążenia Nowa strona nie powinna być zbalansowana obciążeniowo, ponieważ ruch nie jest duży, więc nie ma potrzeby angażowania się w takie rzeczy. Jednak wraz z szybkim wzrostem ruchu na stronie internetowej i ruchu, pojedynczy serwer jest ograniczony przez własne warunki sprzętowe i trudno jest wytrzymać tak dużą liczbę odwiedzin. W tym przypadku dostępne są dwie opcje: 1. Aktualizacja sprzętu pojedynczego serwera, z dwurdzeniowego na czterordzeniowy, zwiększenie pamięci itd. 2. Zwiększyć liczbę serwerów, aby dzielić obciążenie serwerami. Aby osiągnąć cel zwiększenia przepustowości sieci i zwiększenia mocy obliczeniowej serwera. Pierwszą metodę można rozumieć jako rozwój pionowy, który zawsze jest ograniczony. Druga metoda to właściwy wybór do rozwiązania problemu Metody równoważenia obciążenia można podzielić na dwa kierunki: jeden to użycie oprogramowania do osiągnięcia równoważenia obciążenia, a drugi to implementacja sprzętowego równoważenia obciążenia (w tym łączenie sprzętu i oprogramowania) Używaj oprogramowania do osiągnięcia równowagi obciążenia, a proces ich równoważenia również zużywa część zasobów systemowych i wydłuża czas reakcji. Na przykład LVS, nginx, haproxy, apache itd., te aplikacje do równoważenia obciążenia nadają się do stron internetowych, które nie mają szczególnie dużej liczby odwiedzin. Jeśli masz stronę z dużą liczbą odwiedzin, jak sina i 163, użycie sprzętu do implementacji load balancing jest najbardziej oczywistym wyborem. Istnieje wiele algorytmów load balancing systemu, w tym load balancing opartych na liczbie żądań, adresach IP root oraz algorytmach opartych na ruchu. Często używam dwóch algorytmów. Jeden opiera się na liczbie zgłoszeń A, może zauważyć, że każdy serwer może równomiernie udostępniać żądania klienta, a jeśli jeden z serwerów przestanie działać, nie spowoduje to negatywnego skutku. b. Stan między serwerami musi być zsynchronizowany, na przykład sesja, a do synchronizacji tych stanów potrzebne są inne środki. Jeden z nich dotyczy IP Algorytm ip_hash może mapować IP na serwer, co rozwiązuje problem synchronizacji sesji B. Wadą ip_hash jest to, że jeśli jeden z serwerów padnie, użytkownicy przypisani do tego serwera będą przygnębieni. c, ip_hash łatwo prowadzi do niezrównoważonego obciążenia, teraz rząd kraba rzecznego filtruje słowa kluczowe Google, często nie można go otworzyć, ale po pewnym czasie wszystko będzie w porządku. To sprawiło, że entuzjaści Google popadli w depresję, a wielu użytkowników wyjechało za granicę, by znaleźć agentów. Jeśli tak się stanie, te proxy zostaną przypisane do tego samego serwera, co spowoduje niezrównoważone obciążenie, a nawet awarie.
Po drugie, czym jest utrzymywanie sesji i jaka jest jej funkcja Session hold odnosi się do mechanizmu na load balancerze, który zapewnia, że żądania dostępu powiązane z tym samym użytkownikiem są rozdzielane na ten sam serwer podczas równoważenia obciążenia. Co robi session hold, podaj przykład Jeśli żądanie dostępu użytkownika zostanie przypisane do serwera A, zaloguje się na serwer A i w krótkim czasie ten użytkownik wyśle kolejne żądanie, jeśli nie ma funkcji zatrzymania sesji, żądanie tego użytkownika prawdopodobnie zostanie przypisane do serwera B, w tym momencie nie ma logowania na serwerze B, więc trzeba się zalogować ponownie, ale użytkownik nie wie, gdzie jest przypisane żądanie, użytkownik uważa, że jest zalogowany, dlaczego musi się logować ponownie, bo doświadczenie użytkownika jest bardzo złe. A jeśli kupujesz coś na Taobao, login = "Shoot something=" add address = "to pay", to jest seria procesów, którą można również rozumieć jako proces operacyjny, cały ten ciąg procesów powinien być realizowany przez jeden serwer i nie może być przypisany do różnych serwerów przez load balancer. Session hold ma limit czasowy (z wyjątkiem serwerów przypisanych do stałego, jak ip_hash), a różne narzędzia do równoważenia obciążenia zapewniają takie ustawienie czasu oczekiwania, LVS, apache itd. Nawet język PHP daje session.gc_maxlifetime ustawienia czasu oczekiwania sesji Czas utrzymania sesji powinien być ustawiony bardziej niż czas przetrwania sesji, co może zmniejszyć potrzebę synchronizacji sesji, ale nie da się tego wyeliminować. Więc synchronizacja sesji nadal musi być wykonywana.
Po trzecie, synchronizacja sesji Dlaczego synchronizacja sesji? Wspomniano o tym w kontekście utrzymania sesji. Więcej informacji można znaleźć w artykule Trzy metody synchronizacji sesji w klastrze sieciowym
W klastrze sieciowym istnieją trzy metody synchronizacji sesji
Po zrobieniu klastra webowego zdecydowanie najpierw rozważ synchronizację sesji, ponieważ po równoważeniu obciążenia dostęp do tej samej strony będzie przypisany różnym serwerom. Ten artykuł przedstawia trzy różne sposoby rozwiązania tego problemu w zależności od sytuacji: Po pierwsze, użyj bazy danych do synchronizacji sesji Nie używałem tej metody podczas synchronizacji sesji wieloserwerowych, ale gdybym miał użyć tej metody, pomyślałem o dwóch metodach: 1. Użyć komputera o niższej półce do zbudowania bazy danych do przechowywania sesji serwera WWW lub zbudować tę specjalną bazę danych na serwerze plików; gdy użytkownik uzyskuje dostęp do serwera, przechodzi do tej specjalnej bazy danych, aby sprawdzić sytuację sesji i osiągnąć cel synchronizacji sesji. 2. Metoda ta polega na umieszczeniu tabeli, w której przechowywana jest sesja, razem z innymi tabelami bazy danych; jeśli mysql również jest klastrowany, każdy węzeł mysql musi mieć tę tabelę, a tabela danych tej sesji musi być synchronizowana w czasie rzeczywistym. Wyjaśnienie: Korzystanie z bazy danych do synchronizacji sesji zwiększa obciążenie bazy, co z natury jest podatne na wąskie gardła. Pierwsza z powyższych metod jest lepsza i rozdziela tabelę, w której sesja jest umieszczona niezależnie, zmniejszając obciążenie dla rzeczywistej bazy danych 2. Używaj plików cookie do synchronizacji sesji Sesja to sytuacja pliku przechowywana po stronie serwera, a cookie to sytuacja pliku na kliencie, jak osiągnąć synchronizację? Metoda jest bardzo prosta, czyli umieszczenie sesji wygenerowanej przez stronę wizyty użytkownika w ciasteczku, czyli użycie ciasteczka jako stacji przekaźnikowej. Odwiedzasz serwer WWW A, generujesz sesję i umieszczasz ją w ciasteczku, Twój dostęp jest przypisany do serwera WWW B, w tym momencie serwer B najpierw ocenia, czy serwer ma tę sesję, jeśli nie, idziesz sprawdzić, czy ta sesja jest w cookie, jeśli nie, oznacza to, że sesja tak naprawdę nie jest zapisana, jeśli jest w cookie, Zsynchronizuj sessoin w ciasteczku z serwerem WWW B, aby sesja mogła zostać zsynchronizowana. Uwaga: Ta metoda jest prosta i wygodna w implementacji, nie zwiększa obciążenia bazy danych, ale jeśli klient wyłączy pliki cookie, sesja nie może zostać zsynchronizowana, co spowoduje straty na stronie internetowej; Ciasteczka nie są bardzo bezpieczne, a mimo że zostały zaszyfrowane, nadal można je podrobić.
3. Używanie pamięci podręcznej do synchronizacji sesji Pamięć podręczna może być rozproszona, ale bez tej funkcji nie może być używana do synchronizacji sesji. Może połączyć pamięć z serwera WWW, tworząc "mempool" – niezależnie od tego, który serwer generuje sessoin, można ją umieścić w tej "mempuli", a wszystko inne może być wykorzystane. Zalety: synchronizacja sesji w ten sposób nie zwiększa obciążenia bazy danych, a bezpieczeństwo jest znacznie lepsze niż przy użyciu ciasteczek, a umieszczanie sesji w pamięci jest znacznie szybsze niż odczyt plików. Wady: pamięć podręczna dzieli pamięć na wiele specyfikacji bloków pamięci, istnieją bloki i rozmiary, co również oznacza, że pamięć podręczna nie może w pełni wykorzystać pamięci, powoduje fragmentację pamięci, a jeśli blok pamięci jest niewystarczający, powoduje również przepełnienie pamięci.
Po czwarte, podsumowanie Wszystkie trzy powyższe metody są wykonalne Pierwsza metoda, która najbardziej wpływa na prędkość systemu, nie jest zalecana; Druga metoda przynosi dobre rezultaty, ale zagrożenia bezpieczeństwa są takie same; Trzecią metodę, osobiście uważam, że trzecia metoda jest najlepsza, polecam wszystkim jej użycie;
|