Společnost Cloudflare vydala framework Pingora 0.6, určený pro vývoj zabezpečených vysoce výkonných síťových služeb v jazyce Rust. Proxy postavené pomocí Pingora se již více než dva roky používá v síti pro doručování obsahu 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 publikován pod licencí Apache 2.0.
Hlavní funkce Pingora:
- Podpora HTTP/1 a HTTP/2 (v plánech je HTTP/3), stejně jako možnost vytváření služeb, které používají své vlastní protokoly nebo UDP/TCP.
- Podpora vícetrhu zpracování požadavků v asynchronním režimu.
- Možnost připojení callback-handlerů a filtrů, které umožňují řídit 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 (využívá se OpenSSL, BoringSSL nebo Rustls).
- 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:
- Při ukončení práce je zajištěno uchování názvů runtime komponentů v logu pro usnadnění diagnostiky problémů způsobených chybějícími runtime komponenty, které vedou ke zpožděním během ukončení.
- Bylo zahrnuto sledování fází vykonávání serveru, informace o nichž mohou být užitečné pro monitoring nebo zajištění odolnosti vůči chybám. Při přechodu fáze vykonávání se generuje zpráva ExecutionPhase, kterou lze zachytit přes API Server::watch_execution_phase.
- Bylo povoleno umístění ve paměti komprimovaných slovníků.
- Do implementace http-serveru a http-proxy byly přidány direktivy HttpServerOptions a H2Options.
- Byla implementována ochrana proti útoku MadeYouReset, který umožňuje vyvolat selhání služby manipulací s řídícími rámci HTTP/2.
Zdroj: opennet.ru
