Firma Cloudflare opublikowała drugie wydanie frameworka Pingora, przeznaczonego do tworzenia zabezpieczonych, wysokowydajnych usług sieciowych w języku Rust. Stworzony za pomocą Pingora proxy od około roku jest używany w sieci dystrybucji treści Cloudflare zamiast nginx i obsługuje ponad 40 milionów żądań na sekundę. Kod napisany jest 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ści tworzenia usług wykorzystujących własne protokoły lub UDP/TCP.
- Możliwość wielowątkowego przetwarzania żądań w trybie asynchronicznym.
- Wsparcie dla dodawania callbacków i filtrów, które umożliwiają zarządzanie różnymi etapami przetwarzania żądań, a także modyfikowanie, przekierowywanie, blokowanie i rejestrowanie żądań oraz 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 (stosowane OpenSSL lub BoringSSL).
- 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:
- Dodano wsparcie dla ustawiania filtrów dla dodatkowych nagłówków HTTP/2.
- Dodano możliwość zmiany rozmiaru bufora przychodzących pakietów dla TCP.
- Dodano funkcję body_bytes_read().
- Dodano filtr cache_not_modified_filter.
- Dodano możliwość rejestrowania kluczy TLS.
- Dodano funkcję callback purge_response.
Źródło: opennet.ru
