Cloudflare on vĂ€lja andnud Pingora 0.7 raamistikku, mis on mĂ”eldud Rust keeles turvaliste ja kĂ”rge jĂ”udlusega vĂ”rguteenuste arendamiseks. Pingora abil ehitatud proksi on juba ĂŒle kahe aasta kasutusel Cloudflare'i sisuhalduse vĂ”rgus, asendades nginx'i ja töötluses on ĂŒle 40 miljoni pĂ€ringu sekundis. Kood on kirjutatud Rust keeles ja avaldatud Apache 2.0 litsentsi alusel.
Pingora peamised omadused:
- Toetab HTTP/1 ja HTTP/2 (plaanis on HTTP/3) ning vÔimaldab teenuste loomist, mis kasutavad oma protokolle vÔi UDP/TCP.
- Toetab mitme lĂ”imega pĂ€ringute töötlemist asĂŒnkroonses reĆŸiimis.
- VÔimalus kinnitada callback-kÀitlejaid ja filtreid, mis vÔimaldavad hallata erinevaid pÀringu töötlemise etappe, samuti muuta, suunata, blokeerida ja logida pÀringute ja vastuste kujundust.
- gRPC ja WebSocket-i proksimine.
- Lisanduvad koormuse tasakaalurid.
- VÔimalus muuta konfiguratsiooni ilma taaskÀivitamiseta.
- Toetab rakenduskoodi vĂ€rskendamist ĂŒhenduste katkestamatuks.
- Vahendid koormuse ĂŒmbersuunamiseks tĂ”rgete korral (failover).
- Integreeritud erinevate jĂ€lgimis- ja logimissĂŒsteemidega (Syslog, Prometheus, Sentry, OpenTelemetry).
- Toetab TLS-krĂŒptimist (kasutatakse OpenSSL, BoringSSL vĂ”i Rustls).
- Valmis Rusti paketid HTTP-proksi loomiseks, vĂ”rgu protokollidega töötamiseks, HTTP-pealkirjade eraldamiseks, liikluse arvestamiseks ja piiramiseks, koormuse tasakaalustamiseks, jaotatud rippmenĂŒĂŒd Ketama haldamiseks, mĂ€lus hoidmiseks ja asĂŒnkroonselt töötlemiseks.
Uues versioonis on jÀrgmised muudatused:
- SslDigest struktuuri on lisatud vĂ€li 'extension' ja TlsAccept tĂŒĂŒbi jaoks on rakendatud kĂ€sitleja handshake_complete_callback, mis vĂ”imaldab TLS-ĂŒhendusele kinnitada rakendusspetsiifilisi andmeid. NĂ€itena on nĂ€idatud, kuidas seda vĂ”imalust kasutada. serverilt, et lugeda kliendi sertifikaadist teavet ja tagastada see HTTP-reaktsioonis.
- Lisatud on ConnectionFilter tĂŒĂŒbi, et filtreerida TCP-ĂŒhendusi enne TLS parameetrite lĂ€birÀÀkimiste etappi, mis vĂ”imaldab ressursse sÀÀsta, katkestades ĂŒhendused varajases etapis.
- Lisatud on tugiteenuse virtuaalsed tasemed (Virtual L4 Streams), mis vÔimaldavad pingora-proxy'le integreerida oma vÔrguprotokollide rakendusi.
- Rakendatud on vÔimalus kasutada opties 'verify_cert' ja 'verify_hostname' konfiguratsioonides, kus on rustls.
- VĂ€listest crate-pakettidest on lubatud juurdepÀÀs HttpProxy struktuurile, et ĂŒlekirjutada pĂ€ringute proximise loogikat.
- Lubatud on taustatöötluse eraldamine alamkĂŒsimustest peamisest sessiooni töötlejast.
- Pakkuda on vÔimalus jÀlgida HTTP1 ja HTTP2 pÀringute kehade suurust ning proksi töötamise metriikat.
- Lisatud on vÔimalus luua oma seansse enkapsuleeritud HTTP-liikluse jaoks.
- Seatud on piirangud lru raamatukogu versioonide (0.16.3 vÔi uuem) kasutamiseks, kuna IterMut'i kÀsitleja rakendamise haavatavus vÔib pÔhjustada kokkuvarisemise, kui kontrollitakse muutujate laenamise (borrow checker) reeglite jÀrgimist.
Allikas: opennet.ru
