效能與擴展性
Istio 可以輕鬆建立已部署服務的網路,提供豐富的路由、負載平衡、服務到服務驗證、監控等功能,所有這些都無需變更任何應用程式程式碼。Istio 致力於以最小的資源開銷提供這些優勢,並旨在支援具有高請求率的大型網格,同時新增最小的延遲。
Istio 資料平面元件 Envoy Proxy 處理流經系統的資料。Istio 控制平面元件 Istiod 設定資料平面。資料平面和控制平面有不同的效能考量。
Istio 1.24 的效能摘要
Istio 負載測試網格由 Istio 網格中的 1000 個服務和 2000 個 Pod 組成,每秒有 70,000 個網格範圍內的請求。
控制平面效能
Istiod 根據使用者撰寫的組態檔和系統的目前狀態設定 Sidecar Proxy。在 Kubernetes 環境中,自訂資源定義 (CRD) 和部署構成系統的組態和狀態。Istio 組態物件(例如閘道和虛擬服務)提供使用者撰寫的組態。為了產生 Proxy 的組態,Istiod 會處理來自 Kubernetes 環境和使用者撰寫組態的組合組態和系統狀態。
控制平面支援數千個服務,這些服務分散在數千個 Pod 中,並具有數量相近的使用者撰寫的虛擬服務和其他配置物件。Istiod 的 CPU 和記憶體需求會隨著配置量和可能的系統狀態而擴展。CPU 消耗量會根據以下因素擴展:
- 部署變更的速率。
- 配置變更的速率。
- 連線到 Istiod 的 Proxy 數量。
然而,這部分本質上是可水平擴展的。
您可以增加 Istiod 實例的數量,以減少配置到達所有 Proxy 所需的時間。
在大規模部署中,強烈建議使用配置範圍界定。
資料平面效能
資料平面的效能取決於許多因素,例如:
- 客戶端連線數量
- 目標請求速率
- 請求大小和回應大小
- Proxy 工作執行緒數量
- 協定
- CPU 核心
- 各種 Proxy 功能。特別是,遙測篩選器(日誌記錄、追蹤和指標)已知會產生中等程度的影響。
延遲、吞吐量以及 Proxy 的 CPU 和記憶體消耗量,會根據上述因素進行測量。
Sidecar 和 ztunnel 資源使用
由於 Sidecar Proxy 會在資料路徑上執行額外的工作,因此它會消耗 CPU 和記憶體。在 Istio 1.24 中,每秒有 1000 個 HTTP 請求,每個請求包含 1 KB 的有效負載:
- 一個具有 2 個工作執行緒的單個 Sidecar Proxy 大約消耗 0.20 個 vCPU 和 60 MB 的記憶體。
- 一個具有 2 個工作執行緒的單個 Waypoint Proxy 大約消耗 0.25 個 vCPU 和 60 MB 的記憶體。
- 一個單個 Ztunnel Proxy 大約消耗 0.06 個 vCPU 和 12 MB 的記憶體。
Proxy 的記憶體消耗量取決於 Proxy 持有的總配置狀態。大量的監聽器、叢集和路由可能會增加記憶體使用量。
延遲
由於 Istio 會在資料路徑上新增 Sidecar Proxy 或 Ztunnel Proxy,因此延遲是一個重要的考量因素。Istio 新增的每個功能也會增加 Proxy 內部的路徑長度,並可能影響延遲。
Envoy Proxy 會在回應傳送給客戶端後收集原始遙測資料。收集請求的原始遙測資料所花費的時間不會影響完成該請求所花費的總時間。但是,由於工作執行緒正忙於處理請求,因此工作執行緒不會立即開始處理下一個請求。此過程會增加下一個請求的佇列等待時間,並影響平均和尾部延遲。實際的尾部延遲取決於流量模式。
Istio 1.24 的延遲
在 Sidecar 模式下,請求將在到達伺服器之前先經過客戶端 Sidecar Proxy,然後再經過伺服器 Sidecar Proxy,反之亦然。在 Ambient 模式下,請求將在到達伺服器之前先經過客戶端節點 Ztunnel,然後再經過伺服器節點 Ztunnel。在配置 Waypoint 的情況下,請求將在 Ztunnel 之間經過 Waypoint Proxy。以下圖表顯示了 HTTP/1.1 請求在各種資料平面模式下傳輸的 P90 和 P99 延遲。為了執行測試,我們使用了由 5 台 M3 Large 機器組成的裸機叢集,並使用 Flannel 作為主要的 CNI。我們使用 Istio 基準測試取得了這些結果,針對 http/1.1
協定,每個請求的有效負載為 1 KB,使用 4 個客戶端連線、2 個 Proxy 工作執行緒,並且啟用雙向 TLS,分別在每秒 500、750、1000、1250 和 1500 個請求的速率下執行。
注意:此測試是在 CNCF 社群基礎架構實驗室中執行的。不同的硬體將產生不同的值。
no mesh
:客戶端 Pod 直接呼叫伺服器 Pod,在 Istio 服務網格中沒有 Pod。ambient: L4
:預設的 Ambient 模式,搭配 安全 L4 覆蓋網路ambient: L4+L7
:預設的 Ambient 模式,搭配安全 L4 覆蓋網路,並為命名空間啟用 Waypoint。sidecar
:客戶端和伺服器 Sidecar。
基準測試工具
Istio 使用以下工具進行基準測試:
fortio.org
- 一個恆定吞吐量負載測試工具。nighthawk
- 一個基於 Envoy 的負載測試工具。isotope
- 一個具有可配置拓撲的合成應用程式。