Kilka dni temu Prezentacja Cloudflareza pośrednictwem wpisu na blogu, decyzja o udostępnieniu kodu źródłowego frameworka „Pingora”, specjalnie zaprojektowany dla rozwijać bezpieczne i wydajne usługi sieciowe, a także programowalne systemy sieciowe w języku Rust.
Te ramy udostępnia gotowe pakiety Rust, które ułatwiają utworzenie serwera proxy HTTP, praca z protokołami sieciowymi, parsowanie nagłówków HTTP, rozliczanie i ograniczanie ruchu, równoważenie obciążenia, zarządzanie rozproszoną tabelą skrótów Ketama, utrzymywanie pamięci podręcznej w pamięci RAM i asynchroniczne przetwarzanie limitów czasu. Oprócz obsługi protokołu HTTP, Pingora umożliwia tworzenie usług przy użyciu własnych protokołów lub UDP/TCP.
Co to jest Pingora?
Pingora to asynchroniczna, wielowątkowa platforma Rust zaprojektowana do bezpiecznego i wydajnego tworzenia usług proxy HTTP.. Od czasu premiery Pingora była szeroko testowana i używana w systemach o dużym obciążeniu, jako serwer proxy używany w sieci dostarczania treści Cloudflare, przetwarzający ponad 40 milionów żądań na sekundę przez ponad rok.
Cloudflare wspomina, że bezpieczeństwo jest kluczowym priorytetem projektu, dlatego wybrano język Rust, aby zmniejszyć prawdopodobieństwo wystąpienia błędów związanych z pamięcią. Dodatkowo zwrócono uwagę na efektywność, wydajność i rozszerzalność, umożliwiając integrację filtrów i procedur obsługi wywołań zwrotnych w celu kontrolowania różnych etapów przetwarzania żądań, a także modyfikowania, przekierowywania, blokowania i rejestrowania żądań i odpowiedzi.
Pingora to biblioteka i zestaw narzędzi, a nie wykonywalny plik binarny. Innymi słowy, Pingora to silnik napędzający samochód, a nie sam samochód. Chociaż Pingora jest gotowa do użytku produkcyjnego do zastosowań przemysłowych, rozumiemy, że wiele osób chce usługi internetowej „pod klucz”, z dołączonymi bateriami i opcjami konfiguracji bez kodu lub z małą ilością kodu. Budowanie tej aplikacji na platformie Pingora będzie głównym przedmiotem naszej współpracy z ISRG w celu rozszerzenia zasięgu Pingory. Czekajcie na przyszłe ogłoszenia dotyczące tego projektu.
Wśród kluczowe zalety Pingorywyróżniają się następujące:
- Bezpieczeństwo pamięci: Pingora oferuje bardziej bezpieczną dla pamięci alternatywę w porównaniu do usług napisanych w C/C++. Powoduje to mniejsze prawdopodobieństwo błędów w kodowaniu, które mogłyby zagrozić bezpieczeństwu systemu.
- Zoptymalizowana wydajność: Dzięki wielowątkowej architekturze Pingora jest szybka i wydajna, oszczędzając zasoby procesora i pamięci. Jest to szczególnie korzystne w przypadku obciążeń wrażliwych na wydajność i koszty.
- Zaawansowane dostosowywanie: Interfejsy API dostarczane przez Pingorę są wysoce programowalne, co pozwala na szerokie dostosowywanie w celu tworzenia niestandardowych i zaawansowanych bram lub modułów równoważenia obciążenia.
Pingora oferuje kilka kluczowych funkcji, takich jak wielowątkowe przetwarzanie żądań w trybie asynchronicznym, obsługa HTTP/1 i HTTP/2 (w planach HTTP/3), gRPC i proxy WebSocket, wymienne moduły równoważenia obciążenia, zmiana konfiguracji bez restartu, aktualizacja kodu bez zrywania połączeń, strategie przełączania obciążenia w przypadku awarii (failover), integracja z systemami monitorowania i logowania (takimi jak Syslog, Prometheus, Sentry, OpenTelemetry) oraz obsługa szyfrowania TLS poprzez biblioteki C OpenSSL i BoringSSL.
Wyróżnione funkcje Pingory
- Obsługa proxy HTTP/1 i HTTP/2, gRPC i websocket.
- Konfigurowalne strategie równoważenia obciążenia i przełączania awaryjnego.
- Integracja z bibliotekami OpenSSL i BoringSSL w celu zapewnienia zgodności i bezpieczeństwa.
- Filtry i wywołania zwrotne do dostosowywania i przetwarzania żądań.
- Płynne ponowne uruchamianie bez przestojów i bezproblemowe aktualizacje.
- Integracja z narzędziami obserwowalności, takimi jak m.in. Syslog, Prometheus, Sentry, OpenTelemetry.
Na koniec Cloudflare wspomina, że współpracuje z projektem Prossimo Internet Security Research Group (ISRG), aby przyspieszyć przyjęcie Pingory w krytycznej infrastrukturze internetowej, przyczyniając się w ten sposób do bezpieczniejszego i niezawodnego Internetu dla wszystkich.
Jeżeli jesteś chcesz dowiedzieć się więcej na ten temat, powinieneś wiedzieć, że kod jest napisany w Rust i opublikowane w ramach licencji Apache 2.0 można także zapoznać się z publikacją Cloudflare W poniższym linku.