Cloudflare on avaldanud Pingora 0.4 raamistikku, mis on mõeldud turvaliste ja jõudluselt kõrgete võrgu teenuste arendamiseks Rusti keeles. Pingora abil ehitatud proxyt on juba üle kahe aasta kasutatud Cloudflare'i sisuhaldusvõrgus nginxi asemel ning see töötleb üle 40 miljoni päringu sekundis. Kood on kirjutatud Rusti 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:
- Algne tugi krüptograafia raamatukogule Rustls, mis kasutab krüptoteenuse pakkujaid aws-lc-rs ja ring, mis põhinevad BoringSSL-il.
- Eksperimentaalne tugi Windows platvormile.
- Dummyt TLS-režiim, mida saab kasutada olukordades, kus tõelise TLS-implementatsiooni kasutamine ei ole võimalik.
- Lisatud gRPC-web mooduli tugi, mis transpordib gRPC-web kliendi päringud. serveri gRPC.
- Lisatud tugi H2C (HTTP/2 puhta TCP kohal, ilma krüpteerimiseta) ja HTTP/1 töötlemiseks ühel võrgupordil.
- Lisatud võimalus ühendada oma connect() funktsioonide rakendusi, et muuta käitumist võrgusidde loomisel, näiteks socket'i lisavalikute määramiseks või vigade simuleerimiseks testimise ajal.
- Lisatud võimalus ignoreerida teavet vastuseid proksimise ajal, nagu näiteks vastused pealkirjaga 'Expect: 100-continue'.
- Lisatud tugi gzip meetodil kokku pressitud vastuste dekompressiooniks.
- Rakendatud taustsüsteemi jälgimise seisundi jälgimine.
- Lisatud võimalus siduda kohalikud pordid vahemikuga.
Allikas: opennet.ru
