Łatwo pomyśleć, że obsługa dużej publiczności wymaga serwerowni wielkości magazynu. Jednak nie zawsze tak jest. Jeśli Twoja witryna jest statyczna, mała maszyna może obsłużyć setki tysięcy odwiedzających. Wyobraź sobie prosty Celeron 500 MHz z systemem Linux i Apache. Połączenie z linią T3 (45 milionów bitów na sekundę). Taka konfiguracja jest w stanie obsłużyć bardzo duże natężenie ruchu. Dostawcy wynajmują cały kompleks za mniej niż 1000 dolarów miesięcznie.
Ale tu jest problem. Najpopularniejsze witryny nie są małe. Szybko napotykają ograniczenia. Jedna maszyna nie może być skalowana w nieskończoność.
„Jeśli masz do czynienia z milionami odwiedzających i dynamiczną zawartością, Twoja maszyna się zepsuje.”
Ograniczenia pojawiają się po osiągnięciu określonego progu. Po pierwsze, być może będziesz musiał codziennie obsługiwać miliony odwiedzających. Pojedynczy procesor ma swoje ograniczenia. Po drugie, występują awarie sprzętu. Jeśli jeden z Twoich serwerów ulegnie awarii, Twoja witryna stanie się niedostępna do czasu wymiany jej na nowy i ponownego skonfigurowania. Po trzecie, duże lub złożone strony szybko zużywają zasoby. Po czwarte, jeśli strona musi zmieniać się dynamicznie dla każdego użytkownika, serwer musi pracować ciężej. Wreszcie przetwarzanie w tle zwiększa opóźnienia. Większość dużych obiektów spełnia wszystkie te kryteria i dlatego wymaga rozbudowanej infrastruktury.
Trzy najważniejsze strategie skalowania
Jeśli budżet na to pozwala, inżynierowie mogą wybrać trzy główne ścieżki podczas szczytowych obciążeń.
- Kup ogromną maszynę z nieograniczoną mocą i redundancją.
- Podziel obciążenie na wiele mniejszych maszyn.
- Połącz obie metody.
Podejście rozproszone jest najbardziej powszechne w dużych aplikacjach internetowych. Być może nawet widziałeś go w akcji, nie zdając sobie z tego sprawy. Jeśli adres URL zmienia się nieznacznie przy każdej wizycie i odświeżaniu witryny (na przykład „www1.xyz.com” i „www2.xyz.com”), jest to wskazówka. Ta witryna korzysta z szeregu niezależnych komputerów. Wszyscy korzystają z oprogramowania serwera WWW. Wszyscy używają tej samej kopii strony internetowej.
Prawdziwa magia polega na sposobie dystrybucji przychodzących żądań. Może się to zdarzyć na dwa główne sposoby.
Równoważenie obciążenia oparte na DNS
System nazw domen (DNS) tłumaczy nazwy czytelne dla człowieka na adresy IP. W niektórych konfiguracjach DNS stosowana jest metoda okrężna. Serwery DNS przeglądają listę dostępnych adresów IP za każdym razem, gdy otrzymane zostanie żądanie.
To naturalnie rozkłada obciążenie. Każdy serwer odbiera część ruchu. Nie komunikują się ze sobą w sprawie obciążenia. Udostępniają jedynie treści statyczne lub wstępnie wygenerowane, do których mają dostęp.
Przełącznik równoważenia obciążenia
Bardziej zaawansowane podejście polega na użyciu modułu równoważenia obciążenia. Cały ruch sieciowy dociera najpierw do centralnego przełącznika. Maszyna ta pełni funkcję kontrolera ruchu. Przekierowuje żądanie do dostępnego serwera.
Switch nie tylko zgaduje. Sprawdza każdy serwer, aby określić, który jest najmniej obciążony. Dzięki temu praca jest równomiernie rozłożona. Firma HowStuffWorks przyjęła takie podejście. Firmowy moduł równoważenia obciążenia rozdziela ruch pomiędzy trzy różne serwery internetowe. Jeśli jeden z nich zawiedzie, pozostałe dwa utrzymują działanie witryny. Brak przestojów dla użytkownika.
Taka nadmiarowa konfiguracja ma oczywiste zalety. Awaria jednej maszyny nie powoduje awarii całego obiektu. Wydajność można także zwiększać etapami. Potrzebujesz więcej mocy? Dodaj kolejny samochód. Jest elastyczny.
Jest jedna wada. Te rozproszone maszyny w dalszym ciągu często korzystają ze scentralizowanych baz danych w celu przetwarzania transakcji. Wraz ze wzrostem ruchu baza danych staje się wąskim gardłem.
Jeden ogromny samochód
Nie wszyscy dzielą się obciążeniem. TerraServer firmy Microsoft podąża drogą „jednej dużej maszyny”.
TerraServer przechowuje terabajty zdjęć satelitarnych. Przetwarza miliony żądań dotyczących tych danych. Wykorzystuje potężny sprzęt korporacyjny. Weźmy na przykład Digital AlphaServer 8400. Posiada on osiem 64-bitowych procesorów pracujących z częstotliwością 440 MHz. Zawiera 10 GB pamięci RAM ze sprawdzaniem i korekcją błędów.
To mnóstwo mocy w jednym pakiecie. Pozwala to uniknąć złożoności koordynacji sieci pomiędzy wieloma serwerami. Ale to jest drogie. Jeśli jeden AlphaServer ulegnie awarii, usługa zostanie zatrzymana.
Wybór zależy od modelu biznesowego. Treść statyczna preferuje proste ustawienia. Transakcje dynamiczne wymagają nadmiarowości. Aplikacje intensywnie przetwarzające dane mogą wymagać surowej mocy obliczeniowej.
Jeśli chcesz dowiedzieć się więcej, dostępnych jest wiele zasobów. W3C ustanawia standardy. Firma Microsoft opublikowała białą księgę na temat równoważenia obciążenia w systemie Windows NT. IBM udostępnia „czerwoną księgę” dotyczącą równoważenia serwerów. Artykuł na temat rozproszonych wspólnych serwerów internetowych opisuje tę teorię.
Ale podstawowa rzeczywistość pozostaje prosta. Ruch jest skalowalny. Zasoby sprzętowe są ograniczone. Inżynierowie budują pomost pomiędzy tymi dwoma czynnikami. Sposób jego zbudowania zależy od tego, do czego faktycznie będzie używana Twoja witryna.
