Cloudflare on välja andnud Pingora 0.6 raamistikku, mis on mõeldud turvaliste ja kõrge jõudlusega võrguteenuste arendamiseks Rusti keeles. Pingora abil loodud proksi on juba üle kahe aasta kasutuses Cloudflare'i sisu edastamise 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 alusel.
Pingora põhifunktsionaalsused:
- Toetab HTTP/1 ja HTTP/2 (plaanis on HTTP/3) ning võimaldab luua teenuseid, mis kasutavad oma protokolle või UDP/TCP.
- Toetab mitme lõimega päringute töötlemist asünkroonses režiimis.
- Pakub võimalust lisada callback-töötlejaid ja filtreid, mis võimaldavad juhtida erinevaid päringute töötlemise etappe, samuti muuta, suunata, blokeerida ja logida päringud ja vastused.
- gRPC ja WebSocketi proxü.
- Liidetavad koormuse tasakaalustajad.
- Pakub võimalust muuta konfiguratsiooni ilma taaskäivituseta.
- Toetab rakenduse koodi uuendamist ühenduste katkestamata.
- Rikkete korral koormuse üleviimise tööriistad (failover).
- Integreerimine erinevate jälgimis- ja logimisüsteemidega (Syslog, Prometheus, Sentry, OpenTelemetry).
- TLS-krüpteerimise tugi (kasutatavad OpenSSL, BoringSSL või Rustls).
- Valmis Rust-paketid HTTP-proxide loomiseks, võrguprotokollide haldamiseks, HTTP-peade analüüsimiseks, liikluse arvestamiseks ja piiramiseks, koormuse jagamiseks, jaotatud hash-tabeli Ketama kasutamiseks, vahemälu aktiivmälu hoidmiseks ja asünkroosse ajakauguse töötlemiseks.
Uue versiooni muudatuste hulgas on:
- Töötamise lõpetamise ajal on tagatud runtime-komponentide nimede logimine, et lihtsustada probleemide diagnoosimist, mis on tingitud runtime-komponentide puudumisest ja põhjustavad viivitusi töötamise lõpetamisel.
- Täpse täitmisfaasi jälgimine on sisse lülitatud serverile, teave, mis võib olla kasulik jälgimiseks või tõrketaluvuse tagamiseks. Täitmisfaasi muutumise korral genereeritakse sõnum ExecutionPhase, mille saab püüda API Server::watch_execution_phase kaudu.
- Lubatud on kokkusurutud sõnastike hoidmine mälus.
- HTTP-serveri ja HTTP-proksi rakendusse on lisatud HttpServerOptions ja H2Options direktiivid.
- Tehtud on kaitse MadeYouReset rünnaku vastu, mis võib põhjustada teenusekatkestuse HTTP/2 juhtkaadrite manipuleerimise kaudu.
Allikas: opennet.ru
