Vydanie Pingora 0.7, rámca na vytváranie sieťových služieb

Spoločnosť Cloudflare vydala verziu frameworku Pingora 0.7, určenú na vývoj zabezpečených vysokovýkonných sieťových služieb v jazyku Rust. Proxy postavené pomocou Pingora sa už viac ako dva roky používajú v sieti na doručovanie obsahu Cloudflare namiesto nginx a spracovávajú viac ako 40 miliónov požiadaviek za sekundu. Kód je napísaný v jazyku Rust a publikovaný pod licenciou Apache 2.0.

Hlavné funkcie Pingora:

  • Podpora HTTP/1 a HTTP/2 (v plánoch HTTP/3), ako aj možnosť vytvárania služieb, ktoré používajú vlastné protokoly alebo UDP/TCP.
  • Podpora viacvláknového spracovania požiadaviek v asynchrónnom režime.
  • Možnosť pripojiť callback spracovateľov a filtre, ktoré umožňujú spravovať rôzne fázy spracovania požiadavky, ako aj meniť, presmerovávať, blokovať a zaznamenávať požiadavky a odpovede.
  • Proxy gRPC a WebSocket.
  • Pripojiteľné balancery záťaže.
  • Možnosť zmeny konfigurácie bez reštartovania.
  • Podpora aktualizácie kódu aplikácie bez prerušenia spojení.
  • Prostriedky na prepnutie záťaže v prípade zlyhania (failover).
  • Integrácia s rôznymi systémami monitorovania a logovania (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Podpora TLS šifrovania (používa sa OpenSSL, BoringSSL alebo Rustls).
  • Hotové Rust balíky na vytvorenie HTTP proxy, prácu so sieťovými protokolmi, analýzu HTTP hlavičiek, sledovanie a obmedzovanie prevádzky, rozdeľovanie záťaže, prácu s rozdelenou hašovacou tabuľkou Ketama, udržiavanie cache v pamäti a asynchrónne spracovanie timeoutov.

Medzi zmenami v novej verzii:

  • Do štruktúry SslDigest bolo pridané pole „extension“ a pre typ TlsAccept bol implementovaný spracovateľ handshake_complete_callback, ktorý umožňuje pripojiť k TLS pripojeniu ľubovoľné aplikáciou špecifické údaje. Ako príklad je ukázané, ako využiť túto možnosť na vytvorenie servera, ktorý číta informácie zo certifikátu klienta a vracia ich v HTTP odpovedi.
  • Bol pridaný typ ConnectionFilter na filtrovanie TCP pripojení na fáze pred rokovaním TLS parametrov, čo šetrí zdroje tým, že zruší pripojenia v skorých fázach.
  • Pridaná podpora virtuálnych prúdov transportnej vrstvy (Virtual L4 Streams), ktoré umožňujú integrovať do pingora-proxy vlastné implementácie sieťových protokolov.
  • Realizovaná možnosť používať možnosti verify_cert a verify_hostname v konfiguráciách s rustls.
  • Pre externé crate balíky je povolený prístup k štruktúre HttpProxy na predefinovanie logiky proxy požiadaviek.
  • Povolené je vyčlenenie pozadí spracovateľov podžiadostí z hlavného spracovateľa relácie.
  • Poskytnutá možnosť sledovania veľkosti telies požiadaviek HTTP1 a HTTP2, ako aj metrík fungovania proxy.
  • Pridaná možnosť vytvorenia vlastných relácií pre enkapsulovaný HTTP prenos.
  • Uložené obmedzenia na používanie verzií knižnice lru (0.16.3 alebo novšie) kvôli zraniteľnosti v implementácii iterátora IterMut, ktorá vedie k zlyhaniu z dôvodu porušenia kontroly požiadaviek na požiadavky (borrow checker).

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster