Vydání Pingora 0.7, rámce pro vytváření síťových služeb

Cloudflare zveřejnilo vydání rámce Pingora 0.7, 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:

  • Struktura SslDigest byla aktualizována o pole „extension“ a pro vlastnost TlsAccept byl implementován obslužný program handshake_complete_callback, který umožňuje připojení libovolných dat specifických pro aplikaci k připojení TLS. Je uveden příklad, jak tuto funkci použít k vytvoření server, který načte informace z klientského certifikátu a vrátí je v HTTP odpovědi.
  • Byla přidána vlastnost ConnectionFilter pro filtrování TCP připojení před vyjednáváním parametrů TLS, čímž se šetří zdroje včasným ukončením připojení.
  • Přidána podpora pro virtuální streamy transportní vrstvy (virtuální streamy L4), což umožňuje integrovat vlastní implementace síťových protokolů do pingora-proxy.
  • Implementována možnost použití voleb verify_cert a verify_hostname v konfiguracích s rustls.
  • Externí balíčky crate nyní mohou přistupovat ke struktuře HttpProxy a přepsat tak logiku proxyování požadavků.
  • Umožňuje oddělení obslužných rutin subrequestů na pozadí od hlavní obslužné rutiny relace.
  • Byla poskytnuta možnost sledovat velikost těla požadavků HTTP1 a HTTP2 a také metriky výkonu proxy.
  • Přidána možnost vytvářet vlastní relace pro zapouzdřený HTTP provoz.
  • Pro používání verzí knihovny lru (0.16.3 nebo novějších) byla zavedena omezení kvůli zranitelnosti v implementaci iterátoru IterMut, která vede k pádu v důsledku spuštění kontroly výpůjček.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster