Cloudflare przełączył się na Pingora, własny serwer proxy napisany w języku Rust

Cloudflare migruje z NGINX do Pingora

Pingora, to nowy serwer proxy HTTP stworzony przez cloudflare przy użyciu Rust

Prezentacja Cloudflare niedawno kto migruje? Twoja sieć dostarczania treści do korzystania z serwera proxy «pingora», który wyróżnia się tym, że jest napisany w Rust. The zastąpiono nowy serwer proxy Konfiguracja oparta na serwerze NGINX ze skryptami Lua i obsługuje ponad miliard żądań dziennie.

Należy zauważyć, że przejście na wyspecjalizowany serwer proxy «Pingora» pozwoliło nie tylko na wdrożenie nowych funkcji i zwiększenie bezpieczeństwa dzięki bezpiecznej pracy z pamięcią, ale także doprowadziło do znacznego wzrostu wydajności i oszczędności zasobów.

Rozwiązanie oparte na Pingora nie wymaga użycia Lua i wykorzystuje zoptymalizowaną pod względem obciążenia architekturę Cloudflare, zużywając 70% mniej zasobów procesora i 67% mniej pamięci przy przetwarzaniu tego samego ruchu.

Przez długi czas, system proxy ruchu między użytkownikami a serwerami końcowymi oparty na skryptach NGINX i Lua spełniłem potrzeby Cloudflare, ale wraz z rozwojem sieci i wzrostem jej złożoności, uniwersalne rozwiązanie nie wystarczyło, zarówno pod względem wydajności, jak i ograniczeń w rozszerzalności i realizacji nowych możliwości dla klientów.

W szczególności wystąpiły trudności w dodawaniu funkcjonalności poza prostą bramą i systemem równoważenia obciążenia. Na przykład w przypadku, gdy serwer nie był w stanie przetworzyć żądania, konieczne było przekierowanie żądania na inny serwer, dostarczając mu inny zestaw nagłówków HTTP.

Zamiast architektury ze zgłoszeniami podzielonymi na odrębne procesy robocze (pracownicy), Pingora korzysta z modelu wielowątkowego, co w scenariuszach użytkowania Cloudflare (wysoka koncentracja ruchu z różnych witryn z dużą zmianą statystyczną) wykazywało bardziej wydajną dystrybucję zasobów między rdzeniami procesora.

W szczególności wiązanie niezrównoważonych żądań z procesami w nginx prowadziło do niezrównoważonego obciążenia rdzeni procesora, w wyniku czego żądania wymagające dużej ilości zasobów i blokowanie we/wy spowalniały przetwarzanie innych żądań.

Ponadto powiązanie puli połączeń z procesami kontrolera nie pozwalało na ponowne wykorzystanie już ustanowionych połączeń z innych procesów kontrolera, co zmniejsza wydajność w przypadku dużej liczby procesów kontrolera.

Wprowadzenie Pingory umożliwiło 160-krotne zmniejszenie liczby operacji nawiązywanie nowych połączeń oraz zwiększyć odsetek powtórnie wykorzystanych żądań z 87,1% do 99,92%. Oprócz zmniejszenia liczby ponownych połączeń i wydajniejszego wykorzystania rdzeni procesora, poprawa wydajności nowego serwera proxy wynikała głównie z usunięcia wolnych sterowników Lua używanych z nginx.

Wybrano język Rust, ponieważ pozwala on na wysoką wydajność w połączeniu z dostępnością narzędzi bezpiecznych dla pamięci. Wspomina się, że pomimo wysoko wykwalifikowanych inżynierów Cloudflare i przeglądu kodu, programy napisane w języku C nie mogły uniknąć błędów, które prowadzą do problemów z pamięcią (na przykład luki w parserze HTML).

Jeśli chodzi o nowy kod, mówiliśmy o przypadkach analizy awarii w Pingorze, które okazały się spowodowane nie problemami w aplikacji, ale błędem w jądrze Linuksa i awariami sprzętu.

Dodatkowo można zauważyć, że Linus Torvalds skomentował włączenie obsługi języka Rust w jądrze Linuksa, wyrażone podczas odbywającej się w tych dniach konferencji Open-Source Summit Europe. Kernel 6.0 nie zawierał łatek do tworzenia sterowników urządzeń w języku Rust, ale według Linusa prawdopodobnie zostaną one zaakceptowane w jądrze 6.1, nie skorzystasz z integracji.

Jako powód do dodania wsparcia dla Rusta, oprócz pozytywnego wpływu na bezpieczeństwo, Linus korzysta również z okazji, aby zwiększyć zainteresowanie pracą nad jądrem ze strony nowych uczestników, co jest ważne w kontekście starzejących się weteranów.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w poniższy link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.