發布 Pingora 0.7,一個用於創建網路服務的框架

Cloudflare 發布了 Pingora 0.7 框架,旨在使用 Rust 語言開發安全、高效能的網路服務。使用 Pingora 建置的代理程式已經取代 Nginx 在 Cloudflare 內容交付網路中使用了兩年多,每秒處理超過 40 萬個請求。該程式碼是用 Rust 編寫的,並根據 Apache 2.0 許可證發布。

Pinora 的主要特點:

  • 支援 HTTP/1 和 HTTP/2(計劃中的 HTTP/3),以及使用自己的協定或 UDP/TCP 建立服務的能力。
  • 支援非同步方式的多執行緒處理請求。
  • 能夠附加回呼處理程序和篩選器,使您能夠管理請求處理的各個階段,以及修改、重新導向、封鎖和記錄請求和回應。
  • 代理 gRPC 和 WebSocket。
  • 可連接的負載平衡器。
  • 無需重新啟動即可更改配置的能力。
  • 支援在不中斷連線的情況下更新應用程式程式碼。
  • 發生故障(故障轉移)時進行負載切換的方法。
  • 與各種監控和日誌記錄系統(Syslog、Prometheus、Sentry、OpenTelemetry)整合。
  • 支援 TLS 加密(使用 OpenSSL、BoringSSL 或 Rustls)。
  • 現成的 Rust 套件用於建立 HTTP 代理、使用網路協定、解析 HTTP 標頭、計費和限制流量、負載平衡、使用 Ketama 分散式雜湊表、維護 RAM 中的快取以及非同步處理逾時。

新版本的變化包括:

  • SslDigest 結構中新增了「extension」字段,並且為 TlsAccept trait 實作了 handshake_complete_callback 處理程序,允許將任意應用程式特定的資料附加到 TLS 連線。文中展示如何使用此功能建立連線的範例。 服務器它從客戶端憑證中讀取訊息,並在 HTTP 回應中傳回該訊息。
  • 新增了 ConnectionFilter 特性,用於在 TLS 參數協商之前過濾 TCP 連接,透過儘早丟棄連接來節省資源。
  • 增加了對虛擬傳輸層流(虛擬 L4 流)的支持,允許您將自己的網路協定實作整合到 pingora-proxy 中。
  • 實作了在 rustls 設定中使用 verify_cert 和 verify_hostname 選項的功能。
  • 現在允許外部 crate 套件存取 HttpProxy 結構以覆蓋請求代理邏輯。
  • 允許將後台子請求處理程序與主會話處理程序分開。
  • 現在可以追蹤 HTTP1 和 HTTP2 請求的主體大小以及代理效能指標。
  • 新增了為封裝的HTTP流量建立自訂會話的功能。
  • 由於 IterMut 迭代器實作中存在漏洞,導致借用檢查器觸發而崩潰,因此對 lru 庫版本(0.16.3 或更高版本)的使用進行了限制。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster