Izdanje Pingora 0.4, okvira za kreiranje mrežnih servisa

Cloudflare je objavio izdanje okvira Pingora 0.4, dizajniranog za razvoj sigurnih mrežnih usluga visokih performansi na Rust jeziku. Proxy napravljen pomoću Pingore koristi se u Cloudflare mreži za isporuku sadržaja umjesto Nginx-a više od dvije godine i obrađuje više od 40 miliona zahtjeva u sekundi. Kod je napisan u Rustu i objavljen pod licencom Apache 2.0.

Ključne karakteristike Pingore:

  • Podrška za HTTP/1 i HTTP/2 (HTTP/3 u planovima), kao i mogućnost kreiranja servisa koristeći sopstvene protokole ili UDP/TCP.
  • Podrška za višenitnu obradu zahtjeva u asinhronom načinu rada.
  • Mogućnost povezivanja rukovatelja povratnim pozivima i filtera koji vam omogućavaju upravljanje različitim fazama obrade zahtjeva, kao i modificiranje, preusmjeravanje, blokiranje i evidentiranje zahtjeva i odgovora.
  • Proxying gRPC i WebSocket.
  • Povezivi balanseri opterećenja.
  • Mogućnost promjene konfiguracije bez ponovnog pokretanja.
  • Podrška za ažuriranje koda aplikacije bez prekida veze.
  • Sredstva za prebacivanje opterećenja u slučaju kvara (failover).
  • Integracija sa različitim sistemima za praćenje i logovanje (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Podrška za TLS enkripciju (koristeći OpenSSL, BoringSSL ili Rustls).
  • Gotovi Rust paketi za kreiranje HTTP proksija, rad sa mrežnim protokolima, raščlanjivanje HTTP zaglavlja, obračunavanje i ograničavanje saobraćaja, balansiranje opterećenja, rad sa Ketama distribuiranom hash tabelom, održavanje keš memorije u RAM-u i asinhrono procesuiranje vremenskih ograničenja.

Među promjenama u novoj verziji:

  • Početna podrška za Rustls kriptografsku biblioteku koja koristi kripto provajdere bazirane na aws-lc-rs i ring biblioteke zasnovane na BoringSSL-u.
  • Eksperimentalna podrška za Windows platformu.
  • Lažni TLS način rada, koji se može koristiti u situacijama kada nije moguće koristiti pravu TLS implementaciju.
  • Dodata je podrška za gRPC-web modul za prevođenje zahtjeva gRPC-web klijenta u zahtjeve za server gRPC.
  • Pruža mogućnost rukovanja H2C (HTTP/2 preko golog TCP-a, bez enkripcije) i HTTP/1 vezama na istom mrežnom portu.
  • Dodata je mogućnost povezivanja vlastitih implementacija funkcije connect() za promjenu ponašanja prilikom uspostavljanja mrežne veze, na primjer, za postavljanje dodatnih opcija za utičnicu ili simulaciju grešaka tokom testiranja.
  • Pruža mogućnost ignorisanja informativnih odgovora prilikom proxyja, kao što su odgovori sa zaglavljem “Očekujte: 100-nastavak”.
  • Dodata podrška za raspakivanje gzip komprimiranih odgovora.
  • Implementirano računovodstvo pozadinskog stanja za potrebe praćenja.
  • Dodata mogućnost vezanja za niz lokalnih portova.

izvor: opennet.ru

Dodajte komentar