Wydanie Pingora 0.4, frameworka do tworzenia usług sieciowych.

Firma Cloudflare opublikowała wydanie frameworka Pingora 0.4, przeznaczonego do tworzenia zabezpieczonych, wysoko wydajnych usług sieciowych w języku Rust. Proxy stworzone za pomocą Pingora jest od ponad dwóch lat używane w sieci dostarczania treści Cloudflare jako alternatywa dla nginx i obsługuje ponad 40 milionów zapytań na sekundę. Kod jest napisany w języku Rust i opublikowany na licencji Apache 2.0.

Główne możliwości Pingora:

  • Wsparcie dla HTTP/1 i HTTP/2 (w planach HTTP/3), a także możliwość tworzenia usług korzystających z własnych protokołów lub UDP/TCP.
  • Wsparcie dla wielowątkowego przetwarzania zapytań w trybie asynchronicznym.
  • Możliwość dołączania callbacków i filtrów umożliwiających zarządzanie różnymi etapami przetwarzania zapytania, a także modyfikowanie, przekierowywanie, blokowanie i logowanie zapytań i odpowiedzi.
  • Proxy gRPC i WebSocket.
  • Modułowe load balancery.
  • Możliwość zmiany konfiguracji bez restartu.
  • Wsparcie dla aktualizacji kodu aplikacji bez przerywania połączeń.
  • Narzędzia do przełączania obciążenia w przypadku awarii (failover).
  • Integracja z różnymi systemami monitorującymi i logującymi (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Wsparcie dla szyfrowania TLS (wykorzystuje OpenSSL, BoringSSL lub Rustls).
  • Gotowe pakiety Rust do tworzenia proxy HTTP, pracy z protokołami sieciowymi, analizy nagłówków HTTP, zliczania i ograniczania ruchu, balansowania obciążenia, pracy z rozproszoną tablicą haszującą Ketama, utrzymywania pamięci podręcznej w pamięci RAM i asynchronicznego przetwarzania czasów oczekiwania.

Wśród zmian w nowej wersji:

  • Wstępne wsparcie dla biblioteki kryptograficznej Rustls, wykorzystującej dostawców kryptografii opartych na bibliotekach aws-lc-rs i ring, opartych na BoringSSL.
  • Eksperymentalne wsparcie dla platformy Windows.
  • Tryb fikcyjnego TLS (dummy TLS), który można stosować w sytuacjach, gdy nie można użyć rzeczywistej implementacji TLS.
  • Dodano wsparcie dla modułu gRPC-web do tłumaczenia zapytań klientów gRPC-web na zapytania do serwera gRPC.
  • Udostępniono możliwość obsługi połączeń H2C (HTTP/2 na czystym TCP, bez szyfrowania) i HTTP/1 na jednym porcie sieciowym.
  • Dodano możliwość podłączenia własnych implementacji funkcji connect() w celu zmiany zachowania podczas nawiązywania połączenia sieciowego, na przykład w celu ustawienia dodatkowych opcji dla gniazdka lub symulacji błędów w testach.
  • Dodano możliwość ignorowania odpowiedzi informacyjnych podczas proxy, takich jak odpowiedzi z nagłówkiem „Expect: 100-continue”.
  • Dodano wsparcie dla dekompresji odpowiedzi skompresowanych metodą gzip.
  • Zrealizowano śledzenie stanu backendu w celach monitoringu.
  • Dodano możliwość powiązania z zakresem lokalnych portów.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster