Kompania Cloudflare publikoi edicionin e dytë të kornizës Pingora, e destinuar për zhvillimin e shërbimeve të sigurta dhe me performancë të lartë në rrjet me gjuhën Rust. Ndërtuar me ndihmën e Pingora, proxy është përdorur për rreth një vit në rrjetin e shpërndarjes së përmbajtjes Cloudflare si zëvendësim për 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ësi për krijimin e shërbimeve që përdorin protokollet e tyre ose UDP/TCP.
- Mundësia e përpunimit të kërkesave në mënyrë të shumëfishtë në mënyrë asinkrone.
- Mbështetje për lidhjen e callback-handler-ëve dhe filtreve që 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 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ërdor OpenSSL ose BoringSSL).
- 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:
- Shtuar mbështetje për vendosjen e filtrave për titujt shtesë HTTP/2.
- Shtuar mundësia për të ndryshuar madhësinë e tamponit të paketicave hyrëse për TCP.
- Shtuar funksionin body_bytes_read().
- Shtuar filtrin cache_not_modified_filter.
- Shtuar mundësia për regjistrimin e çelësave TLS.
- Shtuar funksionin callback purge_response.
Burimi: opennet.ru
