Kompania Cloudflare publikoi numrin e dytë të kornizës Pingora, e cila është e destinuar për zhvillimin e shërbimeve rrjetore të sigurta dhe me performancë të lartë në gjuhën Rust. E ndërtuar me ndihmën e Pingora, kjo proxy është përdorur për rreth një vit 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ë publikur nën licencën Apache 2.0.
Karakteristikat kryesore të Pingora:
- Mbështetje për HTTP/1 dhe HTTP/2 (në planet HTTP/3), si dhe mundësitë për të krijuar shërbime që përdorin protokolle të tyre ose UDP/TCP.
- Mundësia për përpunimin e kërkesave në mënyrë asinkrone me shumë fibra.
- Mbështetje për ngjitjen e procesuesve të callback dhe filtrave, 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 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ërdoret OpenSSL ose BoringSSL).
- 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:
- Shtuar mbështetje për vendosjen e filtrave për tituj të tjerë HTTP/2.
- Shtuar mundësia për të ndryshuar madhësinë e tamponit të paketave hyrëse për TCP.
- Shtuar funksioni body_bytes_read().
- Shtuar filtrin cache_not_modified_filter.
- Shtuar mundësia për të bërë log të çelësave TLS.
- Shtuar funksionin callback purge_response.
Burimi: opennet.ru
