Kompania Cloudflare publikoi versionin e framework-ut Pingora 0.4, i parashikuar për të zhvilluar shërbime rrjetore 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 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:
- Mbështetje fillestare për bibliotekën kriptografike Rustls, e cila përdor ofrues kriptografikë të bazuar në bibliotekat aws-lc-rs dhe ring, të cilat janë të bazuara në BoringSSL.
- Mbështetje eksperimentale për platformën Windows.
- Mënyra e dummy TLS, e cila mund të aplikohet në situata kur është e pamundur të përdoret zbatimi real i TLS.
- Shtuar mbështetje për modulin gRPC-web për të përcjellë kërkesat e klientëve gRPC-web në kërkesat për server gRPC.
- Ofruar mundësinë e përpunimit të lidhjeve H2C (HTTP/2 mbi TCP të pastër, pa enkriptim) dhe HTTP/1 në një port rrjeti të vetëm.
- Shtuar mundësinë e lidhjes së zbatimeve të veta të funksionit connect() për të ndryshuar sjelljen gjatë vendosjes së lidhjes rrjetore, për shembull, për të vendosur opcione shtesë për soketët ose për të simuluar gabime gjatë testimit.
- Ofruar mundësinë e injorimit të përgjigjeve informuese gjatë proksimit, siç janë përgjigjet me titullin 'Expect: 100-continue'.
- Shtuar mbështetje për shpërbërjen e përgjigjeve, të kompresuara me metodën gzip.
- Realizuar ndjekja e gjendjes së backend-it me qëllim monitorimin.
- Shtuar mundësinë e lidhjes në një gamë portesh lokale.
Burimi: opennet.ru
