Kompania Cloudflare publikoi lëshimin e kornizës Pingora 0.6, e cila është krijuar për zhvillimin e shërbimeve rrjetësore të mbrojtura dhe me performancë të lartë në gjuhën Rust. Ndërtuar me ndihmën e Pingora, proksi është përdorur për më shumë se dy vjet në rrjetin e shpërndarjes së përmbajtjes Cloudflare në vend të nginx dhe trajton 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.
Karakteristikat kryesore të Pingora:
- Mbështetje për HTTP/1 dhe HTTP/2 (në planet është HTTP/3), si dhe mundësia për të krijuar shërbime që përdorin protokolle të veta ose UDP/TCP.
- Mbështetje për përpunim shumëthjeshtësor të kërkesave në mënyrë asinkrone.
- Mundësia për të bashkangjitur menaxhuese callback dhe filtra, të cilët lejojnë menaxhimin e fazave të ndryshme të përpunimit të kërkesave, si dhe ndryshimin, ridrejtimin, bllokimin dhe regjistrimin e kërkesave dhe përgjigjeve.
- Proksimi i gRPC dhe WebSocket.
- Balancues ngarkese të qartë.
- Mundësia për të ndryshuar konfigurimin pa rinisje.
- Mbështetje për azhurnimin e kodit të aplikacionit pa ndërprerje të lidhjeve.
- Mjetet për kalimin e ngarkesës në rast dështimi (failover).
- Integrimi me sisteme të ndryshme të monitorimit dhe regjistrimit të të dhënave (Syslog, Prometheus, Sentry, OpenTelemetry).
- Mbështetje për enkriptimin TLS (përdoren OpenSSL, BoringSSL ose Rustls).
- Paketa të gatshme Rust për krijimin e proksi HTTP, punën me protokolle rrjeti, përpunimin e kokës HTTP, mbajtjen dhe kufizimin e trafikut, balancimin e ngarkesës, punën me tabelat e hesh dhe mbajtjen e caches në memorie të përkohshme dhe përpunimin asinkron të kohëve të prishura.
Ndër ndryshimet në versionin e ri:
- Gjatë përfundimit të punës, sigurohet ruajtja në logfile të emrave të komponentëve runtime për të lehtësuar diagnostikimin e problemeve të shkaktuara nga mungesa e komponentëve runtime dhe që çojnë në vonesa gjatë përfundimit.
- Inkuadrohet ndjekja e fazave të ekzekutimit, serverit, informacioni i të cilave mund të jetë i dobishëm për monitorimin ose garantimin e qëndrueshmërisë. Me ndërrimin e fazës së ekzekutimit gjenerohet një mesazh ExecutionPhase, i cili mund të kapet nëpërmjet API Server::watch_execution_phase.
- Lejohet mbajtja në memorie e fjalorëve të kompresuar.
- Në implementimin e serverit http dhe http-proksi janë shtuar drejtime HttpServerOptions dhe H2Options.
- ĂshtĂ« realizuar mbrojtja nga sulmi MadeYouReset, i cili lejon qĂ« tĂ« shkaktohet dĂ«shtimi i shĂ«rbimit pĂ«rmes manipulimit tĂ« kornizave kontrolluese HTTP/2.
Burimi: opennet.ru
