在CDN上,我們不斷開發創新的新方法,幫助我們的基礎設施在負載突然增加時保持高性能和彈性。 這通常涉及探索我們使用的現有技術的優化。 此外,驗證新方法是這一過程的重要組成部分,因爲它保證新的變化對生產環境產生預期的積極影響。
當內容變得受歡迎時,我們會將其複製到數據中心/存在點(POP)中的多臺伺服器上。 這使我們能夠更好地平衡負載並處理此類突發事件,從而降低伺服器過載的風險。 此複製機制稱爲‘熱歸檔’,常用內容稱爲‘熱文件’。 我們最近開發了自適應負載平衡(ALB)優化,通過使其更能適應流量激增,從而改進了我們傳統的熱歸檔。 特別是,它通過測量伺服器負載而不是依賴靜態閾值來動態決定所需的複製量。 這將在Pop中更均勻地分配所有伺服器上的負載,從而增加了任何Pop以及CDN的總體請求處理能力。 我們上一篇關於評估自適應負載平衡系統的文章詳細介紹了此優化的機制。
在這篇文章中,我們驗證了這種優化在生產中的積極影響。 首先,我們定義用於衡量影響的指標。 接下來,我們通過示例展示優化對每個指標的影響。 最後,我們展示了優化對部署了該功能的所有POPS的總體影響。 總之,我們發現伺服器在預定義閾值之後的總負載量減少了至少70%,而幾乎所有POPS都改進了這一指標。 現在,對所有客戶流量都已全局啓用此優化。
定義度量
爲了評估這種新的生產優化的影響,我們定義並監控了三個指標:
- 伺服器偏斜: 這是伺服器負載相對於POP中所有伺服器的中位負載的比率。
- 熱文件數: 這是熱文件機制在任何給定時間複製的文件數。 自適應負載平衡預計會增加熱文件的數量,因爲熱填充是其負載分佈的基礎機制。
- 伺服器花費在目標偏差上的時間: 此度量會評估自適應負載平衡的有效性。 當我們將目標偏差閾值設定爲特定值時,我們希望看到大多數伺服器的偏差通常小於該值。
優化對受監控指標的影響
達到目標偏斜
下圖顯示了彈出式窗口中伺服器負載分佈的兩個快照。 在左側(不帶自適應負載平衡),我們看到許多伺服器的負載超過了偏斜目標(紅色框),其負載高於POP中位數的1.8倍。 在右側(使用自適應負載平衡),我們看到伺服器之間的平衡更大,沒有伺服器顯示的負載高於中位數的1.8倍。
![](https://edg.io/wp-content/uploads/2022/06/Change_in_load_distribution_with_Adaptive_Load_Balancing._We_notice_a_reduction_in_overloaded_servers-1024x310.png)
使用自適應負載平衡更改負載分佈。 我們注意到過載伺服器的數量有所減少。
熱文件的數量和負載分佈
接下來,我們研究了熱文件的數量如何受到影響,以及對每臺伺服器上負載的相應更改。 下圖顯示,在彈出窗口上啓用ALB時,熱文件的數量增加。 這種行爲是預期的,因爲該機制有選擇地增加了從負載較高的伺服器卸載文件的機會。
從根本上說,熱歸檔和ALB通過增加服務特定文件的伺服器數量來減少單個伺服器上的負載。 這會增加每臺伺服器上的存儲負載。 但是,與POP提供的文件總數相比,在任何給定時間選擇要複製的其他文件相對較低,因爲它們只是從需要卸載的離羣伺服器中選擇的。 在大多數情況下,與總磁碟空間相比,使用的額外高速暫存空間非常小。 因此,權衡是值得的,但重要的是識別和意識到。 在我們的實施中,我們包括了健全性檢查,以驗證暫存使用情況不會受到此優化的負面影響。
![](https://edg.io/wp-content/uploads/2022/06/Number_of_hot_files.png)
熱文件的數量。 當啓用”自適應負載平衡”(紅色標記)時,此數目會增加,因爲嘗試卸載離羣值伺服器。
第二個圖顯示了每臺伺服器在同一時間範圍內在該彈出窗口傳遞的流量。 我們觀察到,啓用了”自適應負載平衡”(紅線虛線)後,伺服器之間的負載變得更加平衡。 這使得伺服器對傳入流量具有更強的彈性,並降低了伺服器過載的風險。
![](https://edg.io/wp-content/uploads/2022/06/Load_distribution__Mbps__in_a_PoP_between_05.02-05.04.png)
在2004年5月2日至5月5日之間的一個彈出窗口中載入分佈(Mbps)。 啓用”自適應負載平衡”後,分發變得更加平穩,提供流量的伺服器更多,接近中間值。 這有助於降低伺服器因新流量而超載的風險。
超過目標偏斜所花費的時間
在這裏,我們考慮了一個實驗,其中一個Pop被設定爲保持1.6倍的目標偏斜。 在下圖中,橙色行顯示了試驗期間”伺服器歪斜”的分佈。 將此分佈與基線週期(無自適應負載平衡)的相應分佈藍線進行比較時,我們看到負載向中間值的轉移。 值得注意的是,分佈的”尾巴”也大大減少,第99百分位數從2.12降至1.52,低於目標偏斜。
![](https://edg.io/wp-content/uploads/2022/06/Adaptive_Load_Balancing_decreases_the_maximum_server_load_and_brings_server_loads_closer_to_the_median-1024x653.png)
自適應負載平衡可降低最大伺服器負載,並使伺服器負載更接近中位數。
減少分佈中的”尾部”是優化的主要目標,因爲該尾部中的伺服器(即負載最高的伺服器)在新的流量峯值下,承受過載的風險更大。 爲了進一步量化這一減少,我們還測量了在實驗期間,任何伺服器在具有/不具有自適應負載平衡的情況下通過目標傳遞流量的分鐘數:
![](https://edg.io/wp-content/uploads/2022/06/Adaptive_Load_Balancing_reduces_the_time_servers_spend_delivering_a_load_over_a_target_threshold.png)
自適應負載平衡可減少伺服器在目標閾值上傳遞負載所花費的時間。
在這種情況下,我們觀察到這種流行趨勢中,與目標偏斜相比花費的時間減少了88%。 這是一個很好的指標,說明自適應負載平衡可以保持負載分佈在所需值周圍的偏斜。
全球部署的結果
在對少數選定的POPS進行優化測試並在測量指標上看到良好結果後,我們將該系統部署到每個POP,以量化隨時間推移的累計影響。 如前所述,我們測量了POP中伺服器在傳遞流量時所花費的總分鐘數,超過指定目標偏斜(設定爲POP中伺服器負載中位數的1.8倍)。 下圖顯示了伺服器在75個POPS的閾值上花費的分鐘數的兩個分佈。 藍線對應於4天的基準數據,橙線對應於4天的自適應負載平衡數據。 分佈的整體向左移動顯示,執行自適應負載平衡的POPS中的伺服器在閾值上花費的分鐘數較少。
![](https://edg.io/wp-content/uploads/2022/06/Aggregate_minutes_spent_by_servers_delivering_load_higher_than_the_specified_threshold__1.8_median__over_4_days__for_all_PoP-1024x673.png)
伺服器在4天內爲所有POPS提供高於指定閾值(平均1.8 *)的負載所花費的總分鐘數。 使用”自適應負載平衡”,分佈會向左移動,表明該機制將伺服器負載保持在與中位數的目標偏差以下較長時間。
爲進一步瞭解對各個POPS的影響,我們還記錄了每個POP的此指標百分比變化。 結果顯示,一半的持久性有機污染物的總時間比目標偏差減少了70-95%,幾乎所有持久性有機污染物的時間都減少了超過閾值的時間。
在持續不斷地提高CDN的性能和可靠性的努力中,我們最近部署並評估了一種優化方法,即在Pop中對流量進行負載平衡。 此優化可識別與其他POP相比在指定閾值上裝載的伺服器,並卸載這些伺服器,特別是在新流量峯值時降低性能影響的風險。 生產結果表明,與先前的類比結果一致,在顯示優化在保持伺服器負載分佈在所需的偏斜範圍內的效率方面,有了顯著的改進。 因此,我們現在已爲所有客戶流量實現了全球優化。
特別感謝陳杰倫在實施和部署這一機制方面所做的工作。 此外,感謝Scott Yeager,Derek Shiell,Marcel Flores,Anant Shah和Reed Morrison協助進行一般性討論,Colin Rasor,Richard Rymer和Olexandr Rybak協助進行資料收集與視覺化。