負載平衡系統與 Erlang C 的經濟學
在維持每台伺服器利用率不變的情況下,增加負載平衡系統中的伺服器數量,可以降低平均延遲並改善尾部百分位數(tail percentiles)。在負載隨伺服器數量線性增加的系統中,隨著系統規模擴展,排隊時間會漸進趨近於零,這意味著較大的集群在相同的利用率水平下能提供更好的延遲表現。
M/M/c 排隊系統中的延遲行為
在一個 M/M/c 排隊系統中——其特徵為 Poisson 到達過程、指數分佈的服務時間,以及 c 台後端伺服器——規模與延遲之間的關係是非線性的。當一個具有無限隊列的負載平衡器將流量分配給 c 台伺服器(每台伺服器可同時處理一個請求)時,即使每台伺服器的負載保持不變(例如,維持在 80% 利用率),客戶端觀察到的平均請求時間也會隨著 c 的增加而減少。
這種行為可以用 Erlang's C 公式來解釋,該公式計算了新進請求必須進入隊列而非立即被處理的機率。隨著伺服器數量的增加,請求進入隊列的機率會顯著下降:
- 小規模: 在特定的利用率率下,伺服器較少的系統,請求進入隊列的機率較高。
- 大規模: 在相同的利用率下,擁有更多伺服器的系統,在吸收流量突發(bursts of traffic)時更有效率,從而導致較低的排隊機率。
對平均延遲與尾部延遲的影響
雖然平均延遲通常是一個有爭議的指標,但 Monte-Carlo 模擬顯示,這種延遲改善並不侷限於平均值。中位數(p50)以及高百分位數(p99 和 p99.9)也會隨著伺服器數量的增加而呈現類似的下降趨勢。這表明,擴展伺服器數量可以有效地降低尾部延遲,而不會引入隱藏的效能退化。 나
雲端服務的經濟影響
擴展伺服器數量提供了一個明顯的經濟優勢:營運商可以在相同的資源利用率下實現更低的延遲,或者在相同的延遲目標下實現更高的利用率。由於這些延遲增益大多發生在 c 較小的數值時,因此這項優勢不僅適用於超大規模基礎設施,也適用於中小規模的服務。
模型假設與限制
M/M/c 模型依賴於特定的假設,這些假設可能並不總是與現實世界的生產環境一致:
- 到達過程: 假設為 Poisson 到達過程。
- 服務時間: 假設為指數服務時間。雖然現實中的服務通常呈現 log-normal 服務時間分佈,但隨著規模擴展而改善延遲的總體趨勢通常仍然存在。
- 穩定性要求: 為了讓系統保持穩定並避免無限隊列,平均到達率 ($λ$) 與伺服器數量 ($c$) 與平均服務率 ($μ$) 的乘積之比必須小於 1 ($λ/cμ < 1$)。如果到達率超過了系統的總處理能力,延遲將會無限制地增長。