211service.com
Jak działa Facebook
Facebook jest wspaniałym przykładem efektu sieci, w którym wartość sieci dla użytkownika jest wykładniczo proporcjonalna do liczby innych użytkowników tej sieci.
Siła Facebooka wywodzi się z tego, co Jeff Rothschild, jego wiceprezes ds. technologii, nazywa wykresem społecznościowym – sumą szalenie różnych powiązań między użytkownikami witryny a ich przyjaciółmi; między ludźmi a wydarzeniami; między wydarzeniami i zdjęciami; między zdjęciami a ludźmi; oraz między ogromną liczbą dyskretnych obiektów połączonych metadanymi opisującymi je i ich połączenia.
Ta historia była częścią naszego wydania z lipca 2008 r.
- Zobacz resztę numeru
- Subskrybuj
Facebook utrzymuje centra danych w Santa Clara w Kalifornii; San Francisco; i Północnej Wirginii. Centra są zbudowane na tyłach trzech warstw serwerów x86, załadowanych oprogramowaniem typu open source, z których część stworzył sam Facebook.
Przyjrzyjmy się głównemu obiektowi w Santa Clara, a następnie pokażmy, jak współdziała z rodzeństwem.
Najwyższy poziom sieci Facebook składa się z serwerów sieci Web, które tworzą strony internetowe, które widzą użytkownicy, w większości z ośmioma rdzeniami z 64-bitowym systemem Linux i Apache. Wiele stron i funkcji sieci społecznościowych jest tworzonych przy użyciu PHP, komputerowego języka skryptowego specjalizującego się w prostych, zautomatyzowanych funkcjach. Ale Facebook tworzy również złożone aplikacje podstawowe, korzystając z różnych w pełni funkcjonalnych języków komputerowych, w tym C++, Java, Python i Ruby. Aby zarządzać złożonością tego podejścia, firma stworzyła Thrift, platformę aplikacji, która umożliwia współpracę programów skompilowanych z różnych języków.
Dolna warstwa składa się z ośmiordzeniowych serwerów Linux z MySQL, aplikacją serwera bazy danych o otwartym kodzie źródłowym. Rothschild szacuje, że Facebook ma około 800 takich serwerów dystrybuujących około 40 terabajtów danych użytkowników. Ta warstwa przechowuje wszystkie metadane dotyczące każdego obiektu w bazie danych, takiego jak osoba, zdjęcie lub wydarzenie.
Warstwa środkowa składa się z serwerów pamięci podręcznej. Nawet 800 serwerów baz danych nie może obsłużyć wszystkich potrzebnych danych: Facebook otrzymuje 15 milionów żądań na sekundę zarówno dla danych, jak i połączeń. Rozbudowane serwery pamięci podręcznej z systemem Linux i oprogramowaniem Memcache o otwartym kodzie źródłowym wypełniają tę lukę. Około 95 procent zapytań o dane można wypełnić z 15 terabajtów pamięci RAM serwerów pamięci podręcznej, dzięki czemu do baz danych MySQL i ich stosunkowo wolnych dysków twardych trzeba przekazywać tylko 500 000 zapytań na sekundę.
Zdjęcia, filmy i inne obiekty wypełniające warstwę internetową są przechowywane w osobnych plikach w centrum danych.
Placówka w San Francisco replikuje warstwy sieci Web i pamięci podręcznej, a także filtry z obiektami bazy danych, ale korzysta z warstwy bazy danych Santa Clara MySQL.
Centrum danych w Wirginii jest zbyt daleko, aby udostępniać bazy danych MySQL: z 70 milisekundami opóźnienia w Internecie, to po prostu nie działa. W ten sposób całkowicie duplikuje obiekt Santa Clara, wykorzystując replikację MySQL do utrzymywania synchronizacji warstw bazy danych.
Co dalej z technologią Facebooka? Po pierwsze, mówi Rothschild, firma odkryła, że przerwania na kontrolerach Ethernet serwerów – które pozwalają serwerom przetwarzać niezliczone żądania napływające w tym samym czasie – są wąskim gardłem, ponieważ są one zazwyczaj obsługiwane tylko przez jeden rdzeń. Dlatego Facebook przepisał sterowniki kontrolerów, aby były skalowane w systemach wielordzeniowych. Facebook eksperymentuje również z dyskami półprzewodnikowymi, które mogą 100-krotnie przyspieszyć działanie warstwy bazy danych MySQL.
Biorąc pod uwagę, że Facebook się rozwija – a połączenia rosną wykładniczo – witryna wkrótce będzie potrzebować tej wydajności.