Kompania Cloudflare publikoi versionin e frameworkut Pingora 0.4, i cili është i destinuar për zhvillimin e shërbimeve të mbrojtura dhe me performancë të lartë në rrjet, të shkruara në gjuhën Rust. Duke përdorur Pingora, proxy është përdorur për më shumë se dy vjet në rrjetin e shërbimit të përmbajtjes Cloudflare në vend të nginx dhe menaxhon 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:
- 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ë bazuara në BoringSSL.
- Mbështetje eksperimentale për platformën Windows.
- Rezhimi dummy TLS, i cili mund të përdoret në situata kur nuk është e mundur të përdoret një implementim i vërtetë i TLS.
- Shtuar mbështetje për modul gRPC-web për translacionin e kërkesave nga klientët gRPC-web në kërkesa për serverit gRPC.
- Ofruar mundësia për përpunimin e lidhjeve H2C (HTTP/2 mbi TCP të thjeshtë, pa enkriptim) dhe HTTP/1 në një port rrjeti të vetëm.
- Shtuar mundësinë për të lidhur implementime të veta të funksionit connect() për të ndryshuar sjelljen gjatë vendosjes së lidhjes së rrjetit, për shembull, për të vendosur opsione shtesë për socketin ose për të simuluar gabime gjatë testimit.
- Ofruar mundësia për të injoruar përgjigjet informuese gjatë proxy-t, të tilla si përgjigjet me tituj "Expect: 100-continue".
- Shtuar mbështetje për shpërthimin e përgjigjeve të kompresuara me metodën gzip.
- Realizuar menaxhimi i gjendjes së backend-it për qëllime të monitorimit.
- Shtuar mundësinë për lidhje me një gamë portesh lokal.
Burimi: opennet.ru
