為了跟上不斷增長的媒體內容量,Verizon Media (現在稱為Edgio Media)平臺已投資擴展我們的全球暫存占用空間。 僅在2019年,我們就增加了超過25 Tbps的容量,7個全球POP和近900個最後一英里連接。 原始容量雖然能有效提升效能,但不足以滿足全球對串流內容日益增長的需求,也不是可持續的業務模式。
為了最大限度地提高網路容量的可用性,我們在技術,流程和工具上進行了同等投資,以控制營運和基礎設施成本。 我們的研究團隊不斷推進暫存技術的界限,應用和優化流程,使我們的網路營運商能夠對內容的暫存方式,時間和位置進行精確控制。
現代暫存策略
任何暫存策略的目標都是將最受歡迎的內容保留在暫存中,同時快速高效地刪除不受歡迎的內容。 多年來,研究人員和軟體開發人員設計了無數策略來解決暫存挑戰。 這些問題的範圍從相對簡單到極其復雜。 一些較受歡迎的策略包括:
- 最近最少使用(LRU)
- 最少使用(LFU)
- 先進先出(FIFO)
如果有單一暫存策略來管理所有情況,將會很方便。 但是,此類解決方案尚未開發,特定策略的有效性可能會因服務器和磁盤大小,通信模式和其他因素而大不相同。 根據廣泛的測試,我們發現LRU在命中率和磁碟I/O之間提供了最佳的折衷,比FIFO減少了60%的寫入,同時保持了較高的命中率。 此外,對於CDN中使用的磁碟大小,LRU的性能與更復雜的策略(如S4LRU (Quadruply-segmented LRU)一樣。 您可以在去年在智利瓦拉斯港舉行的被動和主動測量會議(PAM)上發表的這篇文章中了解更多詳細資訊。
利用混合LRU發展高速暫存策略
儘管LRU非常適合我們的環境,但我們始終在尋找推動創新和提高客戶績效的方法。 這導致我們最近在平臺上添加了一項新功能,稱為Hybrid LRU。 它之所以稱爲混合,是因爲它在LRU上添加了一個抽象層。 如果我們不使用混合功能,系統將繼續正常運行,因此非常容易理解,激活或禁用。
我們使用混合方法的目的是調整LRU系統,使我們能夠更好地控制特定內容。 控制是指能夠根據預先定義的設定,明確儲存部分內容,持續時間較長或較短。
這一點非常重要,因為影片流領域發生了變化,尤其是直播流的快速增長。 僅我們的網路就舉辦了數十萬次直播活動,其中許多活動都提供給數百萬同時觀看的觀眾。 儘管此類活動非常受歡迎,但一旦現場活動流完成,就不太可能以任何顯著的數量重新進行流式傳輸。 使用混合LRU,我們可以指定更短的暫存週期,從而釋放寶貴的暫存資源用於其他媒體和內容。
我們正在嘗試鎖定某些內容,並盡力保證其保留在暫存中。 這對於保存期有限的直播影片流尤其有用,但在直播活動之後的幾個小時內仍有很高的需求,而直播活動將成為正常的影片點播內容。 此功能也可用於內容提供商明確希望在特定時間段內鎖定某些內容,以使其不會擊中其源伺服器的情況。
混合LRU還允許我們存儲一些內容較長的時間。 例如,如果源伺服器位於世界的偏遠地區,當CDN暫存中沒有請求的內容時,這可能會導致QoE質量差。 在這種情況下,新的客戶端請求將觸發源伺服器需要填充的暫存丟失,從而可能導致重新緩衝。 將此內容老化較慢將在暫存中停留更長時間,並減少此類源站填充的數量。
混合LRU使用參數
混合LRU由兩個可調參數組成,使我們能夠延遲或加快從暫存中驅逐或刪除特定內容的速度:
- 老化率
- 生存時間(TTL)
生存時間(TTL)參數可將商品的壽命縮短指定數量。 它的工作方式是在該變量設定的持續時間內為某個項目提供極低的驅逐分數。 這將強制項目在自上次訪問後在超速暫存中保留指定的持續時間。 默認值爲0秒,這表示沒有特殊的首選項。
下圖顯示了這些可調參數如何用於調整內容在暫存中的保留時間。 將這些參數視為旋鈕或刻度盤,可根據內容需求進行精確調整,這一點非常有用。 這些圖表顯示了對象在等待訪問時在伺服器高速暫存上的老化情況。
首先,讓我們看看老化率。 傳統LRU對象的老化率隨時間的推移而變化。 但是,隨著我們調高老化率刻度盤,項目的老化速度會更快。 同樣地,當我們朝相反方向轉動轉盤時,項目的老化速度會比LRU慢。 轉動撥盤足夠,緩慢老化的項目永遠不會超過“驅逐閾值”,如圖1所示。 通過此控件,我們可以更快地移除項目以釋放空間,或者根據需要將項目保留在磁碟上更長時間以減少原始伺服器的拉取或其他原因。
與老化率相比,TTL允許我們更改特定項目的暫存能力。 對於使用TTL函數設定的持續時間,項目在磁碟上時不會過期,因此被驅逐的可能性較小(甚至很不可能)。 TTL過期後,項目可以以傳統LRU方式開始老化,或者老化速度快或老化速度慢(取決於操作員的配置方式)。 在下圖中,具有緩慢老化的TTL將項目保留在磁碟上,直到它未超過暫存驅逐閾值。 在另一端,TTL確保實時影片流至少在事件持續時間內被暫存,但此後,使用快速老化功能從磁碟中快速刪除。
在大多數情況下,更改老化率值是調整內容從高速緩存中被逐出時的首選方法,因爲它可以輕鬆適應磁盤上的通信量。 另一方面,TTL更具攻擊性,可以有效地鎖定磁盤的一部分,直到內容發佈。 但是,正如這些示例所示,這兩種控件可以一起使用,以可靠地實現所需效果。
前瞻性暫存策略
寬泛的暫存策略(如LRU)就像一把大錘,對所有內容一視同仁,無論其類型或文件大小如何。 如果某個文件在特定時間內未被擊中,則會從暫存中刪除該文件。 同時,其他不太可能在未來獲得點擊的文件(如一次性實時影片流/事件)將會占用空間。 混合LRU增加了一定程度的精細化,旨在減少不必要的高速暫存占用空間並提高高速暫存命中率。 就像使用小錘子或螺絲刀來更準確地控制哪些文件應保留在高速暫存中,哪些文件應刪除。
目前,混合LRU處於試驗階段,要求操作員調整內容的驅逐時間。 展望未來,我們正在研究是否可以利用申請資料和其他因素自動進行調整。 例如,直播活動具有許多不同的配置文件,數千個請求同時收到相同文件段,然後是影片點播文件。 我們還考慮根據文件大小進行調整-您是希望將大文件保留在磁盤上以最小化網絡流量,還是保留較小的文件以優化緩存命中率?
儘管我們對緩存系統和策略的性能和成熟度充滿信心,但優化有限資源的需求仍然是一項重要的持續工作。