Kompania Cloudflare publikoi versionin 0.6 të kornizës Pingora, e cila është e destinuar për zhvillimin e shërbimeve të rrjetit të sigurta dhe me performancë të lartë në gjuhën Rust. Proxy i ndërtuar me Pingora ka qenë në përdorim për më shumë se dy vjet në rrjetin e shpërndarjes së përmbajtjes të Cloudflare, në vend të nginx, dhe përpunon më shumë se 40 milion kërkesa në sekondë. Kodi është shkruar në gjuhën Rust dhe është publikuar nën licencën Apache 2.0.
Veçoritë Kryesore të Pingora:
- Mbështetje për HTTP/1 dhe HTTP/2 (me plane për HTTP/3), si dhe mundësia për të krijuar shërbime që përdorin protokole të veta ose UDP/TCP.
- Mbështetje për përpunimin në shumë thread-e në mënyrë asinkrone.
- Mundësia për të bashkangjitur callback-handler dhe filtra, të cilat lejojnë menaxhimin e fazave të ndryshme të përpunimit të kërkesës, si dhe ndryshimin, ridrejtimin, bllokimin dhe regjistrimin e kërkesave dhe përgjigjeve.
- Proksimi gRPC dhe WebSocket.
- Balancues ngarkese të lidhur.
- Mundësia e ndryshimit të konfigurimit pa rifilluar.
- Mbështetje për përditësimin e kodit të aplikacionit pa ndërprerë lidhjet.
- Mjetet për kalimin e ngarkesës në rast dështimi (failover).
- Integrimi me sisteme të ndryshme monitorimi dhe regjistrimi (Syslog, Prometheus, Sentry, OpenTelemetry).
- Mbështetje për enkriptimin TLS (përdoret OpenSSL, BoringSSL ose Rustls).
- Paketat përgatitore në Rust për krijimin e proxy HTTP, punën me protokollet rrjet, analizimin e kokave HTTP, monitorimin dhe kufizimin e trafikut, balansimin e ngarkesës, punën me tabelën e heshëjave të shpërndara Ketama, ruajtjen e cache-së në memorien e operativës dhe trajtimin asinkron të skadimeve.
Ndër ndryshimet në versionin e ri:
- Gjatë përfundimit të funksionimit, sigurohet ruajtja në log e emrave të komponentëve runtime për të lehtësuar diagnostikimin e problemeve që rezultojnë nga mungesa e komponentëve runtime dhe që shkaktojnë vonesa gjatë përfundimit të funksionimit.
- Përfshirë ndjekjen e fazave të ekzekutimit serverit, informacion që mund të jetë e dobishme për monitorimin ose sigurimin e qëndrueshmërisë. Gjatë kalimit në fazën e ekzekutimit, krijohet një mesazh ExecutionPhase, i cili mund të kapet përmes API Server::watch_execution_phase.
- Lejohet vendosja në memorie e fjalorëve të kompresuar.
- Në implementimin e serverit http dhe http-proxy janë shtuar direktivat HttpServerOptions dhe H2Options.
- ĂshtĂ« implementuar mbrojtja nga sulmi MadeYouReset, e cila lejon shkaktimin e njĂ« ndalese tĂ« shĂ«rbimit pĂ«rmes manipulimit tĂ« kornizave kontrolluese HTTP/2.
Burimi: opennet.ru
