Wydanie Pingory 0.7, frameworka do tworzenia usług sieciowych

Cloudflare opublikowało wydanie frameworka Pingora 0.7, przeznaczonego do tworzenia bezpiecznych, wydajnych usług sieciowych w języku Rust. Serwer proxy zbudowany przy użyciu Pingory jest używany w sieci dostarczania treści Cloudflare zamiast Nginx od ponad dwóch lat i przetwarza ponad 40 milionów żądań na sekundę. Kod napisany jest w języku Rust i opublikowany na licencji Apache 2.0.

Najważniejsze cechy Pingory:

  • Wsparcie dla HTTP/1 i HTTP/2 (w planach HTTP/3), a także możliwość tworzenia usług z wykorzystaniem własnych protokołów lub UDP/TCP.
  • Wsparcie dla wielowątkowego przetwarzania żądań w trybie asynchronicznym.
  • Możliwość dołączenia procedur obsługi wywołań zwrotnych i filtrów, które pozwalają zarządzać różnymi etapami przetwarzania żądań, a także modyfikować, przekierowywać, blokować i rejestrować żądania i odpowiedzi.
  • Proxowanie gRPC i WebSocket.
  • Możliwość podłączenia modułów równoważących obciążenie.
  • Możliwość zmiany konfiguracji bez ponownego uruchamiania.
  • Obsługa aktualizacji kodu aplikacji bez zrywania połączeń.
  • Środki do przełączania obciążenia w przypadku awarii (przełączenia awaryjnego).
  • Integracja z różnymi systemami monitorowania i logowania (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Obsługa szyfrowania TLS (przy użyciu OpenSSL, BoringSSL lub Rustls).
  • Gotowe pakiety Rust do tworzenia serwerów proxy HTTP, pracy z protokołami sieciowymi, parsowania nagłówków HTTP, rozliczania i ograniczania ruchu, równoważenia obciążenia, pracy z rozproszoną tablicą mieszającą Ketama, utrzymywania pamięci podręcznej w pamięci RAM i asynchronicznego przetwarzania timeoutów.

Wśród zmian w nowej wersji:

  • Do struktury SslDigest dodano pole „rozszerzenie”, a dla cechy TlsAccept zaimplementowano obsługę handshake_complete_callback, umożliwiającą dołączenie dowolnych danych specyficznych dla aplikacji do połączenia TLS. Pokazano przykład użycia tej funkcji do tworzenia serwer, który odczytuje informacje z certyfikatu klienta i zwraca je w odpowiedzi HTTP.
  • Dodano cechę ConnectionFilter umożliwiającą filtrowanie połączeń TCP przed negocjacją parametrów TLS, co pozwala oszczędzać zasoby poprzez wcześniejsze zrywanie połączeń.
  • Dodano obsługę strumieni warstwy transportu wirtualnego (wirtualne strumienie L4), co pozwala na integrację własnych implementacji protokołów sieciowych z pingora-proxy.
  • Dodano możliwość użycia opcji verify_cert i verify_hostname w konfiguracjach z rustls.
  • Zewnętrzne pakiety skrzynek mogą teraz uzyskiwać dostęp do struktury HttpProxy, aby zastąpić logikę proxy żądań.
  • Umożliwia oddzielenie obsługi podżądań w tle od obsługi sesji głównej.
  • Dodano możliwość śledzenia rozmiaru żądań HTTP1 i HTTP2 oraz metryk wydajności serwera proxy.
  • Dodano możliwość tworzenia niestandardowych sesji dla ruchu HTTP w formie kapsułki.
  • Wprowadzono ograniczenia w korzystaniu z wersji biblioteki lru (0.16.3 i nowszych) ze względu na lukę w zabezpieczeniach implementacji iteratora IterMut, która prowadzi do awarii w wyniku uruchomienia modułu sprawdzającego pożyczenie.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster