Architektura AWS S3: prędkość petabajtowa na dyskach HDD
AWS S3 przetwarza ponad 400 bilionów obiektów, 150 milionów żądań na sekundę i szczytowy ruch przekraczający 1 PB/s. Podstawą tego systemu są dyski twarde, mimo ich ograniczeń w zakresie IOPS (ok. 120) i opóźnień do 16 ms przy odczytaniu losowym 0,5 MB. Ekonomia przechowywania na HDD pozwala przechowywać eksabajty danych po najniższej cenie: pojemność wzrosła 7,2 miliona razy, a koszt za bajt spadł 6 miliardów razy w ciągu dekad.
Fizyka dysków twardych określa wydajność: czas poszukiwania ścieżki to 8–9 ms (średnio), opóźnienie obrotowe to 4 ms, a czas transmisji to 2,5 ms. Dostęp sekwencyjny jest skuteczny (do 300 MB/s), ale dostęp losowy jest ograniczony do 32 MB/s na dysk z powodu mechanicznych ruchów głowicy.
Paralelizm przez kodowanie zredukowane
S3 kompensuje ograniczenia HDD masowym paralelizmem. Dane dzielone są na shardy za pomocą schematu kodowania zredukowanego (EC) 5 z 9: 5 fragmentów danych + 4 fragmenty kontrolne. Oznacza to 1,8x narzut zamiast 3x przy replikacji, odporność na 4 awarie i 5 źródeł do odczytu.
Zalety EC:
- Rozkład obciążenia po 9 shardach minimalizuje punkty przeciążenia.
- Odczyt równoległy z 5 shardów przyspiesza dostęp.
- Shardowanie ułatwia zapytania zabezpieczone, aby obejść opóźnienia.
Plik 1 TB na jednym HDD daje 300 MB/s, a na 20 tys. dyskach — TB/s dzięki sumowaniu przepustowości.
Mechanizmy paralelizmu na wszystkich poziomach
Paralelizm realizowany jest w trzech płaszczyznach:
- Klient-front-end: puli połączeń HTTP rozprowadzają żądania po wielu punktach końcowych, unikając przeciążeń proxy i buforów.
- Front-end-back-end: EC sharduje obiekty na tysiące dysków w ShardStore (drzewo LSM oparte na strukturze logów).
- Operacje PUT/GET: uploady wieloczęściowe do zapisu, GET zakresów bajtów do odczytu — podział na ponad 100 strumieni po 10 MB/s zamiast jednego gigabajta.
Zapis jest sekwencyjny (podobny do logu), odczyt wymaga losowego rozłożenia shardów, by uniknąć kolejek.
Walka z punktami przeciążenia
Z dziesiątkami milionów dysków i setkami milionów shardów na sekundę kluczowym wyzwaniem jest równomierna dystrybucja obciążenia. Jeden dysk na 32 MB/s to bottleneck, plus narzut z przebudowy.
Strategia S3:
- Losowość: haszowanie shardów dla równomiernego zużycia.
- Przebudowa: ciągłe przemieszczanie danych bez przestoju.
- Skalowanie poziome: dodawanie dysków bez wpływu na dostępność.
Struktura LSM w ShardStore zoptymalizowana jest pod logi tylko do zapisu, gdzie PUT są szybkie, a GET — poprzez indeksy z równoległym wyszukiwaniem.
Co ważne
- S3 osiąga 1+ PB/s na HDD dzięki EC 5/9 i paralelizmowi na ponad 100 strumieniach.
- Średnie opóźnienie dostępu losowego I/O to 16 ms/0,5 MB, kompensowane przez 5 źródeł odczytu.
- Ekonomia: 1,8x narzut EC vs 3x replikacja oszczędza eksabajty.
- Losowość + przebudowa zapobiegają efektom domina od punktów przeciążenia.
- Backend na drzewie LSM wykorzystuje pełną wydajność sekwencyjną HDD.
— Editorial Team
Brak komentarzy.