Izid Pingora 0.7, ogrodja za ustvarjanje omrežnih storitev

Podjetje Cloudflare je objavilo izdajo ogrodja Pingora 0.7, ki je namenjeno razvoju zaščitenih visokozmogljivih mrežnih storitev v jeziku Rust. Proxy, zgrajen s Pingoro, se že več kot dve leti uporablja v omrežju za dostavo vsebin 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:

  • V strukturo SslDigest je dodano polje 'extension', za tip TlsAccept pa je implementirana obdelovalna funkcija handshake_complete_callback, ki omogoča pripenjanje poljubnih podatkov specifičnih za aplikacijo k TLS-povezavi. Kot primer je prikazano, kako uporabiti to možnost za ustvarjanje strežnika, ki bere informacije iz certifikata stranke in jih vrača v HTTP-odgovoru.
  • Dodana je bila vrsta ConnectionFilter za filtriranje TCP-povezav v fazi pred dogovorom o TLS-parametrih, kar omogoča varčevanje z viri s prekinjanjem povezav v zgodnji fazi.
  • Dodana podpora za virtualne tokove transportne ravni (Virtual L4 Streams), ki omogočajo integracijo lastnih implementacij omrežnih protokolov v pingora-proxy.
  • Ustvarjena je bila možnost uporabe možnosti verify_cert in verify_hostname v konfiguracijah z rustls.
  • Za zunanje crate-paket imate dostop do strukture HttpProxy za prepisovanje logike posredovanja zahtevkov.
  • Določeno je omogočeno izločanje ozadnjih obdelovalcev podzahtjev iz glavnega obdelovalca seje.
  • Omogočeno je sledenje velikosti telesa zahtevkov HTTP1 in HTTP2 ter metrike delovanja posrednika.
  • Dodana je možnost ustvarjanja lastnih sej za enkapsuliran HTTP promet.
  • Določena so omejitve za uporabo različic knjižnice lru (0.16.3 ali novejše) zaradi ranljivosti v implementaciji iteratorja IterMut, ki lahko povzroči zrušitev sistema zaradi aktivacije preverjanja zaimkov (borrow checker).

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster