Společnost Cloudflare zveřejnila druhou verzi frameworku Pingora, určeného pro vývoj zabezpečených vysoce výkonných síťových služeb v jazyce Rust. Proxy postavená pomocí Pingora byla již asi rok používána v síti Cloudflare místo nginx a zpracovává více než 40 milionů požadavků za sekundu. Kód je napsán v jazyce Rust a byl zveřejněn pod licencí Apache 2.0.
Hlavní funkce Pingora:
- Podpora HTTP/1 a HTTP/2 (v plánu je HTTP/3), stejně jako možnosti pro vytváření služeb, které používají vlastní protokoly nebo UDP/TCP.
- Možnost vícetraťového zpracování požadavků v asynchronním režimu.
- Podpora připojení callback-zpracovatelů a filtrů umožňujících spravovat různé fáze zpracování požadavku, stejně jako měnit, přesměrovávat, blokovat a logovat požadavky a odpovědi.
- Proxování gRPC a WebSocket.
- Připojitelné vyvažovače zátěže.
- Možnost změny konfigurace bez restartu.
- Podpora aktualizace kódu aplikace bez přerušení spojení.
- Nástroje pro přepínání zátěže v případě selhání (failover).
- Integrace s různými monitorovacími a logovacími systémy (Syslog, Prometheus, Sentry, OpenTelemetry).
- Podpora šifrování TLS (používá se OpenSSL nebo BoringSSL).
- Hotové Rust balíčky pro vytváření HTTP-proxy, práci se síťovými protokoly, zpracování HTTP hlaviček, sledování a omezení provozu, vyvažování zátěže, práci s distribuovanou hash tabulkou Ketama, udržování cache v operační paměti a asynchronní zpracování časových limitů.
Mezi změnami v nové verzi:
- Byla přidána podpora pro nastavení filtrů pro další hlavičky HTTP/2.
- Byla přidána možnost změny velikosti bufferu příchozích paketů pro TCP.
- Byla přidána funkce body_bytes_read().
- Byl přidán filtr cache_not_modified_filter.
- Byla přidána možnost vedení záznamu o TLS klíčích.
- Byla přidána callback-funkce purge_response.
Zdroj: opennet.ru
