Cloudflare-k Pingora 0.4 markoaren oharra argitaratu du, Rust hizkuntzan errendimendu handiko sare-zerbitzu seguruak garatzeko diseinatua. Pingora erabiliz eraikitako proxy-a Cloudflare edukia bidaltzeko sarean erabili da Nginx-en ordez bi urte baino gehiagoz eta segundoko 40 milioi eskaera baino gehiago prozesatzen ditu. Kodea Rust-en idatzita dago eta Apache 2.0 lizentziarekin argitaratu da.
Pingoaren ezaugarri nagusiak:
- HTTP/1 eta HTTP/2rako euskarria (HTTP/3 planetan), baita zerbitzuak sortzeko gaitasuna ere, protokolo propioak edo UDP/TCP erabiliz.
- Hari anitzeko eskaerak modu asinkronoan prozesatzeko laguntza.
- Eskaerak prozesatzeko hainbat fase kudeatzeko, baita eskaerak eta erantzunak aldatzeko, birbideratzeko, blokeatzeko eta erregistratzeko aukera ematen duten iragazkiak eta iragazkiak eransteko gaitasuna.
- gRPC eta WebSocket proxy-a.
- Konekta daitezkeen karga-orekatzaileak.
- Berrabiarazi gabe konfigurazioa aldatzeko gaitasuna.
- Aplikazio-kodea eguneratzeko laguntza konexioak hautsi gabe.
- Porrotaren kasuan karga aldatzeko bitartekoak (failover).
- Hainbat monitorizazio eta erregistro sistemarekin integratzea (Syslog, Prometheus, Sentry, OpenTelemetry).
- TLS enkriptatzeko laguntza (OpenSSL, BoringSSL edo Rustls erabiliz).
- Rust paketeak HTTP proxyak sortzeko, sareko protokoloekin lan egiteko, HTTP goiburuak analizatzeko, trafikoa kontabilizatzeko eta mugatzeko, karga orekatzeko, Ketama banatutako hash taularekin lan egiteko, RAM-en cachea mantentzeko eta denbora-muga asinkronoen prozesamendurako.
Bertsio berriaren aldaketen artean:
- Rustls kriptografiaren liburutegirako hasierako laguntza aws-lc-rs eta BoringSSLn oinarritutako eraztun liburutegietan oinarritutako kripto-hornitzaileak erabiliz.
- Windows plataformarako euskarri esperimentala.
- TLS simulazio modua, benetako TLS inplementazio bat erabiltzea posible ez den egoeretan erabil daitekeena.
- gRPC-web modulurako laguntza gehitu da gRPC-web bezeroen eskaerak eskabide bihurtzeko. zerbitzaria gRPC.
- H2C (HTTP/2 TCP hutsaren bidez, enkriptaziorik gabe) eta HTTP/1 konexioak sareko ataka berean kudeatzeko gaitasuna eskaintzen du.
- Connect() funtzioaren zure inplementazioak konektatzeko gaitasuna gehitu da sareko konexioa ezartzerakoan portaera aldatzeko, adibidez, socketerako aukera gehigarriak ezartzeko edo probak zehar akatsak simulatzeko.
- Proxy-a egiterakoan informazio-erantzunak alde batera uzteko gaitasuna eman du, hala nola "Espero: 100-jarraitu" goiburua duten erantzunak.
- Gzip bidez konprimitutako erantzunak deskonprimitzeko laguntza gehitu da.
- Backend egoeraren kontabilitatea inplementatu da jarraipena egiteko.
- Tokiko portu sorta batera lotzeko gaitasuna gehitu da.
Iturria: opennet.ru
