A Cloudflare céget bejelentette a Pingora 0.4 keretrendszer megjelenését, amely a biztonságos, nagy teljesítményű hálózati szolgáltatások fejlesztésére szolgál Rust nyelven. A Pingora segítségével készült proxy-t több mint két éve használják a Cloudflare tartalomszolgáltató hálózatában nginx helyett, és több mint 40 millió kérést kezel másodpercenként. A kód Rust nyelven íródott, és Apache 2.0 licenc alatt kerül nyilvánosságra.
A Pingora főbb lehetőségei:
- HTTP/1 és HTTP/2 támogatása (HTTP/3 bevezetése tervezett), valamint lehetőség saját protokollok vagy UDP/TCP alapú szolgáltatások létrehozására.
- Több szálú kérések aszinkron feldolgozásának támogatása.
- Callback-kezelők és szűrők csatolásának lehetősége, amelyek lehetővé teszik a kérések feldolgozásának különböző szakaszainak kezelését, valamint a kérések és válaszok módosítását, átirányítását, blokkolását és naplózását.
- gRPC és WebSocket proxyzás.
- Bővíthető terheléselosztók.
- Konfiguráció változtatásának lehetősége újraindítás nélkül.
- Alkalmazáskód frissítésének támogatása a kapcsolatok megszakítása nélkül.
- Eszközök a hibás működés esetén történő terhelés váltásra (failover).
- Integráció különböző monitoring és naplózási rendszerekkel (Syslog, Prometheus, Sentry, OpenTelemetry).
- TLS titkosítás támogatása (OpenSSL, BoringSSL vagy Rustls alkalmazásával).
- Kész Rust csomagok HTTP-proxy létrehozására, hálózati protokollok kezelésére, HTTP-fejlécek elemzésére, forgalom nyilvántartására és korlátozására, terheléselosztásra, elosztott ketamahash-táblák működtetésére, cache fenntartására a memóriában és aszinkron időtúllépések kezelésére.
Az új verzióban található változások:
- Kezdeti támogatás a Rustls kriptográfiai könyvtár számára, amely az aws-lc-rs és a ring könyvtárakon alapuló kriptólelőállítókat használ.
- Kísérleti támogatás Windows platformhoz.
- Dummy TLS üzemmód, amely alkalmazható olyan helyzetekben, amikor nem lehet a valódi TLS megoldást használni.
- A gRPC-web modul támogatása, amely a gRPC-web kliens kéréseket a gRPC kérésekké alakítja. szerverhez gRPC.
- Lehetővé teszi az H2C (HTTP/2 tiszta TCP-n, titkosítás nélkül) és HTTP/1 kapcsolatok kezelését ugyanazon hálózati porton.
- Lehetővé teszi a connect() funkció saját megvalósításainak csatlakoztatását a hálózati kapcsolat működési módjának megváltoztatásához, például további socket opciók beállításához vagy hibák szimulálásához tesztelés során.
- Lehetővé teszi az információs válaszok figyelmen kívül hagyását az átirányítás során, mint például az "Expect: 100-continue" fejlécű válaszok.
- Gzip módszerrel tömörített válaszok kicsomagolásának támogatása.
- A backend állapotának nyomon követése a megfigyelés céljából.
- Helyi portok tartományához kötés lehetősége.
Forrás: opennet.ru
