Megjelent a Pingora 0.4, a hálózati szolgáltatások létrehozására szolgáló keretrendszer

A Cloudflare közzétette a Pingora 0.4 keretrendszer kiadását, amelyet biztonságos, nagy teljesítményű hálózati szolgáltatások fejlesztésére terveztek Rust nyelven. A Pingora használatával épített proxyt több mint két éve használják a Cloudflare tartalomszolgáltató hálózatban az Nginx helyett, és másodpercenként több mint 40 millió kérést dolgoz fel. A kód Rust nyelven íródott, és az Apache 2.0 licenc alatt van közzétéve.

A Pingora főbb jellemzői:

  • A HTTP/1 és a HTTP/2 támogatása (HTTP/3 a tervekben), valamint szolgáltatás létrehozásának lehetősége saját protokollok vagy UDP/TCP használatával.
  • A kérések többszálú feldolgozásának támogatása aszinkron módban.
  • Visszahíváskezelők és szűrők csatolásának lehetősége, amelyek lehetővé teszik a kérésfeldolgozás 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.
  • A gRPC és a WebSocket proxyja.
  • Csatlakoztatható terheléselosztók.
  • Lehetőség a konfiguráció megváltoztatására újraindítás nélkül.
  • Támogatás az alkalmazáskód frissítéséhez a kapcsolatok megszakítása nélkül.
  • A terhelés átkapcsolásának eszköze meghibásodás esetén (feladatátvétel).
  • Integráció különféle megfigyelő és naplózó rendszerekkel (Syslog, Prometheus, Sentry, OpenTelemetry).
  • TLS-titkosítás támogatása (OpenSSL, BoringSSL vagy Rustls használatával).
  • Kész Rust csomagok HTTP-proxy létrehozásához, hálózati protokollokkal való munkához, HTTP-fejlécek elemzéséhez, forgalom elszámolásához és korlátozásához, terheléselosztáshoz, Ketama elosztott hash-táblázattal való munkához, gyorsítótár karbantartásához a RAM-ban és az időtúllépések aszinkron feldolgozásához.

Az új verzió változásai között szerepel:

  • A Rustls kriptográfiai könyvtár kezdeti támogatása az aws-lc-rs alapú titkosítási szolgáltatókkal és a BoringSSL alapú gyűrűs könyvtárakkal.
  • Kísérleti támogatás a Windows platformhoz.
  • Dummy TLS mód, amely olyan helyzetekben használható, amikor nem lehetséges valódi TLS implementációt használni.
  • Hozzáadva a gRPC-web modul támogatása a gRPC-web klienskéréseknek a következő kérésekké való lefordításához: szerver gRPC.
  • Lehetővé teszi a H2C (HTTP/2 csupasz TCP-n keresztül, titkosítás nélkül) és a HTTP/1 kapcsolatok kezelését ugyanazon a hálózati porton.
  • Hozzáadtuk a connect() függvény saját implementációinak csatlakoztatásának lehetőségét, hogy megváltoztassuk a viselkedést a hálózati kapcsolat létesítésekor, például további opciók beállításához a sockethez vagy a tesztelés során fellépő hibák szimulálásához.
  • Lehetővé teszi az információs válaszok figyelmen kívül hagyását proxyhasználatkor, például az „Expect: 100-continue” fejlécet tartalmazó válaszokat.
  • Támogatás hozzáadva a gzip-tömörített válaszok kicsomagolásához.
  • A háttérállapot felügyeleti célú könyvelése megvalósított.
  • Hozzáadták a helyi portokhoz való kötődés lehetőségét.

Forrás: opennet.ru

Hozzászólás