Przejście Pinteresta na HTTP/3: wzrost wydajności i niezawodności

W niedawnym komunikacie Pinterest ujawnił udaną migrację z protokołu HTTP/2 do HTTP/3. Oznaczało to znaczną poprawę infrastruktury sieciowej. Celem było zwiększenie komfortu użytkowania i poprawa krytycznych wskaźników biznesowych poprzez wykorzystanie możliwości nowoczesnego protokołu HTTP/3.

Podróż do HTTP/3

Wydajność sieci, taka jak niskie opóźnienia i wysoka przepustowość, ma kluczowe znaczenie dla doświadczenia Pinners.

W 2021 r. grupa entuzjastów sieci klienckich w Pinterest zaczęła myśleć o przyjęciu protokołu HTTP/3 dla Pinterest, od ruchu/CDN po aplikacje klienckie. Pracowali nad tym przez cały 2022 rok i osiągnęli cel na początku 2023 roku.

Wydajność sieci

Jak pomaga HTTP/3?

Protokół HTTP jest podstawą komunikacji danych w sieci WWW.

Jeśli nie wiedzą Państwo, czym jest i jak działa protokół HTTP, proszę dowiedzieć się więcej tutaj przed przejściem dalej.

HTTP/3 to nowoczesny protokół HTTP, który ma wiele zalet w porównaniu do HTTP/2, w tym między innymi:

  • Brak problemu blokowania nagłówka linii TCP w porównaniu do HTTP/2.
  • Migracja połączeń między adresami IP, co jest dobre w przypadku zastosowań mobilnych.
  • Możliwość zmiany/dostrojenia parametrów wykrywania utraconych połączeń i kontroli przeciążenia.
  • Skrócony czas połączenia (0-RTT, podczas gdy HTTP/2 nadal wymaga trójstronnych uzgodnień TCP).
  • Większa wydajność w przypadku dużych ładunków, takich jak pobieranie obrazów, strumieniowanie wideo itp.

Przyjrzyjmy się bliżej każdej z tych zalet, aby zrozumieć, co oznaczają i w jaki sposób pomagają Pinterestowi.

1. Blokowanie nagłówków

W protokole HTTP/2 i wcześniejszych wersjach może wystąpić problem zwany “blokowaniem nagłówka linii”. Head-of-line blocking to zjawisko spadku wydajności, w którym jedno żądanie HTTP blokuje przetwarzanie innych żądań.

Head-of-line blocking

Oznacza to, że jeśli jeden zasób (taki jak obraz lub skrypt) napotka opóźnienie w transmisji, może zablokować dostarczenie innych zasobów, nawet jeśli są one gotowe. Może to mieć wpływ na ogólny czas ładowania strony internetowej.

Dla przykładu, rozważmy scenariusz, w którym strona internetowa składa się z kilku zasobów: HTML, CSS, JavaScript i obrazu. Jeśli JavaScript ma większy rozmiar, zablokuje obraz żądany później, dopóki JavaScript nie dotrze.

Może to mieć wpływ na ogólny czas ładowania strony internetowej.

Aby temu zaradzić, HTTP/2 wprowadził Strumienie HTTP. Strumienie HTTP to abstrakcja, która umożliwia multipleksowanie różnych wymian HTTP w tym samym połączeniu TCP.

HTTP 2

Strumienie nie muszą być wysyłane w kolejności i są niezależne od innych strumieni.

Eliminuje to blokowanie Head of Line w warstwie aplikacji. Jednak blokowanie Head Of Line nadal istnieje w warstwie transportowej TCP w HTTP/2.

Protokoły HTTP

HTTP/3 wykorzystuje QUIC zamiast TCP jako protokół transportowy, usuwając w ten sposób blokowanie TCP Head Offive Line w warstwie transportowej. QUIC został specjalnie zaprojektowany w celu optymalizacji korzystania z Internetu na urządzeniach mobilnych.

2. Migracja połączeń między adresami IP

QUIC umożliwia migrację połączenia, co oznacza, że jeśli adres IP klienta ulegnie zmianie (powszechne w scenariuszach mobilnych), połączenie może zostać utrzymane. Jest to korzystne w przypadku zastosowań mobilnych, zapewniając bardziej płynne przejście, nawet jeśli warunki sieciowe klienta ulegną zmianie.

Migracja połączeń między adresami IP

Na przykład, proszę wziąć pod uwagę użytkownika, który korzysta z urządzenia mobilnego, takiego jak smartfon lub tablet, aby uzyskać dostęp do Pinterest, który opiera się na protokole HTTP/3 do komunikacji. Użytkownik decyduje się opuścić dom i zaczyna korzystać z danych komórkowych podczas podróży. Przejście to wiąże się z przełączeniem z domowej sieci Wi-Fi na sieć komórkową, w wyniku czego urządzenie uzyskuje nowy adres IP powiązany z siecią komórkową.

Zdolność HTTP/3 do migracji połączeń między adresami IP zapewnia płynne przejście podczas tego przełączania między sieciami.

3. Możliwość zmiany / dostrojenia wykrywania utraty i kontroli przeciążenia

HTTP/3 zapewnia możliwość zmiany i dostrojenia mechanizmów wykrywania utraty i kontroli przeciążenia. Pozwala to na dostosowanie w oparciu o konkretne przypadki użycia lub warunki sieciowe. Precyzyjne dostrojenie tych aspektów przyczynia się do lepszej wydajności i niezawodności.

W sieci “wykrywanie utraty” odnosi się do zdolności protokołu komunikacyjnego do identyfikacji, kiedy pakiety danych zostały utracone lub nie zostały pomyślnie dostarczone do zamierzonego odbiorcy.

Na przykład, proszę rozważyć scenariusz, w którym urządzenie mobilne doświadcza przerywanej łączności. W takim przypadku mechanizm wykrywania utraty połączenia w protokole HTTP/3 można dostroić tak, aby był bardziej tolerancyjny na krótkie zerwania połączenia, minimalizując niepotrzebne retransmisje i optymalizując transfer danych.

Kontrola przeciążenia jest podstawowym aspektem protokołów sieciowych, zapewniającym wydajną transmisję danych bez powodowania przeciążenia sieci. Algorytmy kontroli przeciążenia określają, w jaki sposób nadawca dostosowuje szybkość transmisji danych w oparciu o warunki sieciowe. HTTP/3 zapewnia możliwość zmiany lub dostrojenia mechanizmów kontroli przeciążenia.

Kontrola przeciążenia

Na przykład, proszę wyobrazić sobie sieć, która napotyka sporadyczne przeciążenia w godzinach szczytu. HTTP/3 umożliwia precyzyjne dostrojenie algorytmów kontroli przeciążenia, umożliwiając protokołowi inteligentne dostosowanie szybkości transmisji danych w oparciu o warunki sieciowe. Ta zdolność adaptacji zapewnia optymalną wydajność nawet w różnych scenariuszach przeciążenia.

Zdolność HTTP/3 do migracji połączeń między adresami IP zapewnia płynne przejście podczas przełączania między sieciami.

4. Skrócony czas połączenia (0-RTT, podczas gdy HTTP/2 nadal wymaga trójstronnych uzgodnień TCP)

Trójstronny uścisk dłoni to proces wykorzystywany przez TCP do ustanowienia niezawodnego i zorientowanego na połączenie kanału komunikacyjnego między klientem a serwerem. Ponieważ HTTP zazwyczaj działa za pośrednictwem protokołu TCP, trójstronne uzgadnianie jest istotne w kontekście ustanawiania połączenia TCP dla komunikacji HTTP. Obejmuje on następujące kroki:

  Skrócony czas połączenia

1. SYN (Synchronizacja): Klient inicjuje połączenie wysyłając do serwera segment TCP z ustawioną flagą SYN. Wskazuje to na zamiar nawiązania połączenia przez klienta, a także zawiera początkowy numer sekwencji.

2. SYN-ACK (potwierdzenie synchronizacji): Po otrzymaniu segmentu SYN, serwer odpowiada segmentem TCP, który ma ustawione flagi SYN i ACK. Numer potwierdzenia jest ustawiony na jeden więcej niż otrzymany numer sekwencji klienta, a serwer wybiera również swój początkowy numer sekwencji.

3. ACK (potwierdzenie): Na koniec klient wysyła segment TCP z ustawioną flagą ACK. Numer potwierdzenia jest ustawiony na jeden więcej niż otrzymany numer sekwencji serwera. To kończy trójstronny uścisk dłoni, a obie strony są teraz świadome, że połączenie zostało nawiązane.

4. RTT (czas podróży w obie strony) obejmuje czas propagacji wiadomości do i z serwera. W kontekście wydajności sieci i stron internetowych, RTT jest krytycznym wskaźnikiem, ponieważ wpływa na szybkość reakcji aplikacji. Niższe wartości RTT wskazują na szybszą komunikację i mniejsze opóźnienia, co jest pożądane w przypadku aplikacji działających w czasie rzeczywistym, gier online i innych scenariuszy, w których niskie opóźnienia mają kluczowe znaczenie.

0-RTT jest godną uwagi cechą protokołu QUIC używanego przez HTTP/3.

Dzięki 0-RTT klient może wysyłać dane do serwera w pierwszej wiadomości połączenia, bez oczekiwania na czas RTT (round-trip time).

Osiąga się to poprzez wykorzystanie wcześniej ustalonych informacji o sesji lub wznowienie poprzedniej sesji. Pozwala to klientowi na zawarcie danych w początkowym żądaniu, poprawiając wydajność konfiguracji połączenia.

Wykorzystanie 0-RTT w HTTP/3 znacznie skraca czas potrzebny na początkową konfigurację połączenia. Klient może od razu rozpocząć wysyłanie danych, co prowadzi do szybszego ładowania stron internetowych i zasobów.

Jest to szczególnie korzystne w scenariuszach, w których minimalizacja opóźnień ma kluczowe znaczenie, takich jak szybkie ładowanie stron internetowych lub dostarczanie treści w czasie rzeczywistym, jak w przypadku Pinterest.

5. Większa wydajność w przypadku dużych obciążeń, takich jak pobieranie obrazów, przesyłanie strumieniowe wideo itp.

HTTP/3 jest bardziej wydajny dla przypadków użycia obejmujących duże ładunki, takie jak pobieranie obrazów lub strumieniowe przesyłanie wideo. Projekt protokołu jest dobrze przystosowany do obsługi scenariuszy, w których konieczne jest przesyłanie znacznych ilości danych, przyczyniając się do poprawy wydajności w środowiskach bogatych w treści multimedialne.

HTTP/3 posiada udoskonalone mechanizmy kontroli przepływu, które pozwalają na lepszą obsługę dużych ładunków. Kontrola przepływu jest niezbędna, aby zapobiec przytłoczeniu odbiornika zbyt dużą ilością danych naraz.

Wydajność HTTP/3 dla przypadków użycia dużego ładunku jest zakorzeniona w jego wydajnym multipleksowaniu, zmniejszonym opóźnieniu, ulepszonej kontroli przepływu i adaptacyjnej obsłudze połączeń. Funkcje te wspólnie przyczyniają się do lepszego doświadczenia użytkownika podczas korzystania z bogatych w multimedia treści w Internecie.

Multipleksowanie, 0-RTT, łatwe migracje połączeń wraz z ulepszoną kontrolą przepływu sprawiają, że HTTP/3 jest wydajny dla dużych ładunków.

Analiza przeprowadzona przez Pinterest wskazuje, że HTTP/3 poprawił opóźnienia i niezawodność w obie strony. Poprawa opóźnień/przepustowości ma krytyczne znaczenie dla dużych funkcji multimedialnych (takich jak wideo i obrazy). Szybsza i bardziej niezawodna sieć jest również w stanie poprawić wskaźniki zaangażowania użytkowników.

Wykres pokazuje opóźnienie żądania sieciowego w obie strony w milisekundach, przed i po HTTP/3, dla danych zebranych w ciągu tygodnia dla różnych ładunków.

Apple Network i Cronet

Podsumowując, przyjęcie przez Pinterest protokołu HTTP/3 stanowi strategiczne posunięcie mające na celu wykorzystanie zaawansowanych funkcji protokołu i zwiększenie ogólnej wydajności sieci platformy. Korzyści, począwszy od zmniejszenia opóźnień po lepszą obsługę dużych ładunków, przyczyniają się do bardziej płynnego i wydajnego doświadczenia użytkownika na platformie Pinterest. Ponieważ branża nadal korzysta z protokołu HTTP/3, Pinterest stoi na czele innowacji, dostosowując swoją infrastrukturę sieciową do najnowszych osiągnięć w protokołach internetowych.