A Cloudflare közzétette a Pingora 0.6 keretrendszer kiadását, amelyet védett, nagy teljesítményű hálózati szolgáltatások fejlesztésére terveztek Rust nyelven. A Pingora segítségével épített proxy már több mint két éve használatban van a Cloudflare tartalomelosztó hálózatában az nginx helyett, és több mint 40 millió kérést kezel másodpercenként. A kód Rust nyelven készült, és az Apache 2.0 licenc alatt van publikálva.
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:
- A leállás során a runtime összetevők neveinek naplózása biztosítva van, a runtime összetevők hiányából eredő problémák diagnosztikájának egyszerűsítése érdekében, amelyek késedelmet okozhatnak a leállás során.
- Fázisfigyelés engedélyezve. a szerver, amely információ hasznos lehet a megfigyeléshez vagy a redundancia biztosításához. A végrehajtási fázis megváltoztatásakor egy ExecutionPhase üzenet generálódik, amelyet az API Server::watch_execution_phase-n keresztül lehet elfogni.
- Engedélyezve van a tömörített szótárak memóriában való elhelyezése.
- A http-szerver és http-proxy megvalósításába bevezetésre kerültek az HttpServerOptions és H2Options direktívák.
- Megvalósították a MadeYouReset támadás ellen védelmet, amely lehetővé teszi a szolgáltatásmegtagadási támadást az HTTP/2 vezérlő keretek manipulálásával.
Forrás: opennet.ru
