Podjetje Cloudflare je objavilo različico ogrodja Pingora 0.6, namenjenega razvoju zaščitenih visoko zmogljivih omrežnih storitev v jeziku Rust. Proxy, zgrajen s Pingoro, se že več kot dve leti uporablja v omrežju za dostavo vsebine Cloudflare namesto nginx in obdeluje več kot 40 milijonov zahtevkov na sekundo. Koda je napisana v jeziku Rust in objavljena pod licenco Apache 2.0.
Glavne značilnosti Pingora:
- Podpora za HTTP/1 in HTTP/2 (v načrtu je HTTP/3), pa tudi možnost ustvarjanja storitev, ki uporabljajo svoje protokole ali UDP/TCP.
- Podpora za obdelavo zahtevkov v večnitnem asinhronem načinu.
- Možnost pripenjanja obdelovalcev callback in filtrov, ki omogočajo upravljanje različnih faz obdelave zahtevka, pa tudi spreminjanje, preusmerjanje, blokiranje in evidentiranje zahtevkov in odgovorov.
- Proxiranje gRPC in WebSocket.
- Priklopni uravnavači obremenitve.
- Možnost spreminjanja konfiguracije brez ponovnega zagona.
- Podpora za posodobitev kode aplikacije brez prekinitev povezav.
- Orodja za preklapljanje obremenitve v primeru okvare (failover).
- Integracija z različnimi sistemi za spremljanje in evidentiranje (Syslog, Prometheus, Sentry, OpenTelemetry).
- Podpora za TLS-šifriranje (uporablja se OpenSSL, BoringSSL ali Rustls).
- Kontejnerji Rust za ustvarjanje HTTP-proxy, delo z omrežnimi protokoli, razčlenjevanje HTTP-headerjev, spremljanje in omejevanje prometa, uravnoteženje obremenitve, delo s porazdeljeno hash-tabelo Ketama, vzdrževanje predpomnilnika v pomnilniku in asinhrono obdelavo časovnih iztekanj.
Među promenama u novoj verziji:
- Ob končanju dela je zagotovljen zapis imen komponent runtime v dnevniku za poenostavitev diagnosticiranja težav, ki jih povzroča odsotnost komponent runtime in povzročajo zamude med končanim delom.
- Spremljanje faz izvajanja je vključeno strežnika, informacije o katerih so lahko koristne za spremljanje ali zagotavljanje odpornosti sistema. Ob spremembi faze izvajanja se ustvari sporočilo ExecutionPhase, ki ga je mogoče prestreči preko API Server::watch_execution_phase.
- Dovoljeno je shranjevanje stisnjenih besedilnikov v pomnilniku.
- V implementaciji http strežnika in http proxy so dodane direktive HttpServerOptions in H2Options.
- Izvedena je zaščita pred napadom MadeYouReset, ki omogoča povzročitev prekinitve storitev s manipulacijo nadzornimi okviri HTTP/2.
Izvor: opennet.ru
