Cloudflare kuulutas välja Pingora raamistikku, mille lähtekood on avatud ja mis on mõeldud Rusti keeles kõrge jõudlusega kaitstud võrgu teenuste ja programmeeritavate võrgu süsteemide arendamiseks. Raamistik on põhjalikult testitud ja seda kasutatakse juba kõrgelt koormatud süsteemides — selle alusel ehitatud proxy on olnud üle aasta tegevuses Cloudflare'i sisu jaotamise võrgus, asendades nginx'i ja töötledes üle 40 miljoni päringu sekundis. Kood on kirjutatud Rusti keeles ja avaldatud Apache 2.0 litsentsi all.
Pingorat saab kasutada mitme lõimega päringute töötlemiseks asünkroonses režiimis, see toetab HTTP/1 ja HTTP/2 (plaanis on HTTP/3), gRPC ja WebSocketi proxy, ühendatavad koormuse tasakaalustajad, konfiguratsiooni muutmine ilma taaskäivitamiseta, koodi uuendamine ilma ühenduste katkemiseta, koormuse üleviimise strateegia määramine tõrke korral (failover), integreerimine erinevate monitooringu ja logimise süsteemidega (Syslog, Prometheus, Sentry, OpenTelemetry). Pingoras toetatakse ka TLS-šifreerimist, mis on implementeritud kui täiendus C-raamatukogude OpenSSL ja BoringSSL üle.
Pakutakse valmis Rust-pakette HTTP-prokside loomiseks, võrguprotokollide haldamiseks, HTTP-pealkirjade analüüsiks, liikluse jälgimiseks ja piiramiseks, koormuse tasandamiseks, Ketama jaotatud räsitabeliga töötamiseks, vahemälu säilitamiseks ja asünkroonselt ajavööndite töötlemiseks. Lisaks HTTP-le toetatakse teenuste loomist, mis kasutavad oma protokolle või UDP/TCP.
Projekti peamiseks prioriteediks on turvalisuse tagamine — mälutööga seotud vigade tekkimise tõenäosuse vähendamiseks on valitud Rust. Suurt tähelepanu on pööratud ka efektiivsusele, jõudlusele ja laiendatavusele. Näiteks prokside ja laadijate loomisel Pingora baasil on planeeritud võimalus lisada tagasiside töötlejaid ja filtreid, mis võimaldavad hallata erinevaid päringute töötlemise etappe, samuti muuta, suunata, blokeerida ja logida päringuid ja vastuseid.serverite ja on Pingora alusel loodud koormuse tasakaalujaotajatel võimalus kinnitada callback-käsitlejaid ja filtreid, mis võimaldavad hallata erinevaid päringu töötlemise etappe ning muuta, suunata, blokeerida ja logida päringuid ja vastuseid.
Koostöös ISRG (Internet Security Research Group) organisatsiooniga, kes on Let’s Encrypt projekti asutaja ja toetab interneti turvalisuse suurendamiseks mõeldud tehnoloogiate arendamist, luuakse Pingora baasil tagapoolne vaheproksi River, mida on kavandatud kasutamiseks kriitilistes elementides. võrguinfrastruktuuriRiveri kood kirjutatakse Rustis ja see levitatakse Apache 2.0 litsentsi all. Arendustööd algavad 2024. aasta teises kvartalis. Praegu on projekt projekteerimise ja arhitektuuri määratlemise etapis. Projekti arendab James Munns Rust Embedded Working Groupist.
Projekti River peamine eesmärk on luua proksi, mis suudab edastada kliendi päringud tagaserveritele, lõpetades sissetulevad TLS-ühendused ning suunates, muutes ja filtreerides päringud vastavalt kehtestatud reeglitele. Riveri eripära on mitme lõime mudel, mis võimaldab saavutada tõhusamat ühenduste taaskasutamist võrreldes selliste proksidega nagu nginx. Proksi funktsionaalsuse laiendamiseks ja filtrite loomiseks toetatakse moodulite ühendamist, mis on kompileeritud WebAssembly formaati (arendamiseks saab kasutada mistahes programmeerimiskeeli, mille puhul on toetatud kompileerimine WASM-i). Konfiguratsiooniformaat plaanitakse teha võimalikult lihtsaks ja tuttavaks.
Allikas: opennet.ru
