Cloudflare zveřejnilo vydání rámce Pingora 0.6, určeného pro vývoj bezpečných, vysoce výkonných síťových služeb v jazyce Rust. Proxy vytvořený pomocí Pingora se používá v síti pro doručování obsahu Cloudflare namísto Nginx již více než dva roky a zpracovává více než 40 milionů požadavků za sekundu. Kód je napsán v Rustu a publikován pod licencí Apache 2.0.
Klíčové vlastnosti Pingora:
- Podpora HTTP/1 a HTTP/2 (HTTP/3 v plánech), stejně jako možnost vytvářet služby pomocí vlastních protokolů nebo UDP/TCP.
- Podpora vícevláknového zpracování požadavků v asynchronním režimu.
- Schopnost připojit obslužné nástroje a filtry zpětných volání, které vám umožní spravovat různé fáze zpracování požadavků a také upravovat, přesměrovávat, blokovat a protokolovat požadavky a odpovědi.
- Proxy gRPC a WebSocket.
- Připojitelné zátěžové balancéry.
- Možnost změny konfigurace bez restartování.
- Podpora aktualizace kódu aplikace bez přerušení připojení.
- Prostředky pro spínání zátěže v případě poruchy (failover).
- Integrace s různými monitorovacími a logovacími systémy (Syslog, Prometheus, Sentry, OpenTelemetry).
- Podpora šifrování TLS (pomocí OpenSSL, BoringSSL nebo Rustls).
- Hotové Rust balíčky pro tvorbu HTTP proxy, práci se síťovými protokoly, parsování HTTP hlaviček, účtování a omezování provozu, vyvažování zátěže, práci s distribuovanou hashovací tabulkou Ketama, udržování cache v RAM a asynchronní zpracování timeoutů.
Mezi změny v nové verzi:
- Během vypínání se nyní názvy běhových komponent ukládají do protokolu, což pomáhá diagnostikovat problémy způsobené chybějícími běhovými komponentami, které způsobují zpoždění při vypínání.
- Sledování fáze provádění povoleno server, informace o kterých mohou být užitečné pro monitorování nebo zajištění odolnosti proti chybám. Při změně fáze provádění se vygeneruje zpráva ExecutionPhase, kterou lze zachytit pomocí API Server::watch_execution_phase.
- Povoleno ukládat komprimované slovníky do paměti.
- Do implementace http serveru a http proxy byly přidány direktivy HttpServerOptions a H2Options.
- Implementována ochrana proti útoku MadeYouReset, který umožňuje odmítnutí služby manipulací s řídicími rámci HTTP/2.
Zdroj: opennet.ru
