媒體工作負載的最佳做法

本頁面說明使用 Cloud Storage 處理媒體工作負載的最佳做法。這些工作負載通常包含各種 Trusted Cloud by S3NS 產品,例如 Media CDNLive Stream APITranscoder APIVideo Stitcher API

總覽

Trusted Cloud by S3NS 提供解決方案,可最佳化下列類型的媒體工作負載:

  • 媒體製作:包括電影後製等工作負載,例如影片編輯,這類工作需要大量運算資源,且通常會使用 GPU 進行高效能運算。通常,儲存在 Cloud Storage 中的媒體相關資料會由在 Compute Engine 或 Google Kubernetes Engine 中執行的應用程式處理,而這項程序的輸出內容會寫回 Cloud Storage。這些工作負載需要將 Cloud Storage 的總讀取和寫入輸送量,擴展至 GPU 閒置時間較短的運算叢集。此外,這類應用程式也需要較短的讀取和寫入延遲時間,因為這對縮短尾部延遲時間至關重要。
  • 媒體資產管理:包括整理媒體資產,以便有效儲存、擷取及使用。
  • 內容放送和發布:包括向使用者串流播放媒體,包括隨選影片 (VoD) 和直播服務。在 VoD 期間,如果使用者要求的內容未快取在內容傳遞網路 (CDN) 上,系統會從 Cloud Storage 值區擷取內容。如果是直播要求,系統會同時將內容寫入 Storage bucket,並從 CDN 讀取內容。

媒體工作負載的最佳做法

如要瞭解適用於媒體工作負載的最佳做法,請參閱下列章節。

資料移轉

如要從本機來源 (例如攝影機或本機儲存空間) 上傳超過 1 TiB 的原始媒體檔案至 Cloud Storage,請使用 Storage 移轉服務。Storage 移轉服務可讓您在物件和檔案儲存系統之間順暢移轉資料。如果是較小的移轉作業,請根據移轉情境選擇服務,將資料移轉至 Cloud Storage 或從 Cloud Storage 移轉資料,或是在檔案系統之間移轉。

Bucket 位置

對於需要運算資源的工作負載 (例如媒體製作),您應在與運算資源相同的區域或雙重區域中建立 bucket。這個方法可降低處理工作負載的讀取和寫入延遲時間,進而提升效能,同時節省成本頻寬。如需選擇值區位置的更多指引,請參閱值區位置注意事項

儲存空間級別

視媒體工作負載類型而定,您應選取的儲存空間級別會有所不同。針對不同媒體工作負載,建議使用的儲存空間級別類型如下:

  • 如要管理媒體資產 (例如封存影片),值區的預設儲存空間級別應為 Archive Storage。您可以為可用性或存取需求不同的物件指定不同的儲存空間類別。
  • 對於媒體製作和內容服務工作負載,由於系統會經常從 Cloud Storage 值區讀取資料,因此您應將資料儲存在 Standard 儲存空間。

如需選擇值區儲存空間級別的更多指引,請參閱儲存空間級別

資料生命週期管理

如要管理媒體資產,請定義生命週期設定,管理值區的物件生命週期。透過物件生命週期管理功能,您可以管理資料生命週期,包括為物件設定存留時間 (TTL)、保留非現行版本的物件,以及降低物件的儲存空間級別,藉此管理費用。

如果資料存取模式可預測,您可以為值區設定生命週期設定。如果資料的存取模式不明或無法預測,可以為值區設定自動調整級別功能。 啟用 Autoclass 後,Cloud Storage 會自動將不常存取的資料移至「較冷」的儲存空間級別。

內容放送和發布工作負載的最佳做法

無論是隨選影片或直播工作負載,目標都是避免在終端使用者的影片播放器上播放影片時,發生任何播放錯誤、播放開始延遲或緩衝情形。這類工作負載也需要擴充讀取作業,以因應大量並行觀看者。在所有情況下,客戶流量讀取作業都應透過 CDN 進行。

如要瞭解適用於內容放送和發布工作負載的最佳做法,請參閱下列各節。

有效使用 CDN

在 Cloud Storage 儲存空間前方使用內容傳遞聯播網 (CDN),可減少延遲時間並提高頻寬效率,藉此快取內容,提升使用者體驗。CDN 可降低頻寬成本、提高資源使用效率及提升效能,進而降低總持有成本 (TCO)。使用 Media CDN 可降低向使用者提供內容的總擁有成本,因為 Media CDN 的快取填滿成本為零。您可以將 Media CDN 做為其他第三方 CDN 的來源。使用其他 CDN 時,如果從這個媒體 CDN 快取提供內容,而不是從來源提供,您仍可降低部分總持有成本。

如果您使用第三方 CDN,CDN 互連網路可讓特選供應商與 Google 的邊緣網路在不同位置建立直接對等互連連結。透過其中一個連結從 Trusted Cloud by S3NS輸出的網路流量可受惠於支援 CDN 供應商提供的直接連線能力,並可自動享有優惠的折扣價格。如需核准的供應商清單,請參閱「Google 核准的服務供應商」。

設定 CDN 時,您可以選擇下列設定:

選取來源防護位置

來源防護位置是 CDN 和 Cloud Storage 之間的快取。如果 CDN 允許選取來源防護位置,請按照 CDN 指南的建議,選擇來源防護位置時,要靠近 Cloud Storage 值區的區域,還是靠近使用者流量集中位置。來源防護措施可避免來源伺服器超載。CDN 來源防護功能會在來源和 CDN 之間新增額外快取,有助於增加來源卸載量。舉例來說,Media CDN 提供多層式邊緣基礎架構,目的是盡可能主動減少快取填充作業。

啟用要求合併

請確認 CDN 已啟用要求摺疊功能。將多個要求併入單一要求,可降低 Cloud Storage B 級作業費用。CDN 在全球各地部署分散式快取,但提供將多個使用者要求併入單一來源要求的方法。舉例來說,Media CDN 會主動將相同快取鍵的多個使用者導向快取填補要求,併入每個邊緣節點的單一原始要求,藉此減少對儲存空間發出的要求數量。

設定 CDN 的重試行為

請務必針對 CDN 上的 HTTP 5xx 回應碼 (502、503、504) 伺服器問題設定重試。CDN 支援來源重試,可重試傳送至來源的失敗要求。大多數 CDN 都允許您指定目前來源的重試次數。如要瞭解如何在 Media CDN 中重試原始要求,請參閱「重試原始要求」。

內容發布地點選項

如果工作負載要從未在 CDN 上快取的 Cloud Storage 讀取資料 (例如提供內容服務和發布 VoD 類型內容),請在選取值區位置時考慮下列因素:

  • 如要盡量降低成本,請在單一區域中建立水桶,這樣儲存空間費用最低。
  • 如要盡量提高可用性,請考慮下列事項:
    • 對於大多數媒體工作負載,建議使用雙區域 bucket,因為這類 bucket 會在兩個區域複製物件,以提高可用性。
    • 如果需要異地備援的內容服務和分析,請使用多區域值區,確保最高可用性。
  • 如要盡量縮短延遲時間並降低網路成本,請考慮下列事項:
    • 如果是 VoD,請選擇最靠近大多數終端使用者的區域,或是流量最集中的區域。
    • 直播期間,儲存空間會收到轉碼器的寫入要求,以及 CDN 的讀取要求,後者會快取內容並發布給使用者。如要提升串流效能,請選擇與用於轉碼的運算資源位於同一位置的區域值區。

最佳化直播的影片片段長度

直播的建議片段大小下限為 2 秒,因為短片片段對長尾寫入延遲時間較為敏感。長尾寫入延遲是指存取頻率不高或要求量較少的內容,寫入作業緩慢或延遲。

儲存空間位置與使用者播放位置之間的實際距離會影響傳輸時間。如果您的終端使用者距離 Bucket 位置很遠,建議使用較長的影片片段大小。

為提供最佳觀看體驗,建議使用重試策略和要求避險,在轉碼器上寫入資料,以減少 Cloud Storage 寫入作業的長尾延遲 (超過 2 秒),並嘗試將緩衝時間延長至約 10 秒。

逐步提高每秒查詢次數

Cloud Storage 值區的初始 IO 容量為每秒 1,000 次物件寫入作業,以及每秒 5,000 次物件讀取作業。如果是直播工作負載,建議您逐步擴充要求,先從每秒 1,000 次寫入和每秒 5,000 次讀取開始,然後每 20 分鐘將要求比率加倍。這個方法可讓 Cloud Storage 在多部伺服器之間重新分配負載,並減少播放問題,進而提升值區的可用性和縮短延遲時間。

如要舉辦 QPS 較高的直播活動,請預先暖機 bucket ,或在 bucket 上啟用階層命名空間,以實作 bucket 擴充功能。在儲存空間值區上實作縮放功能前,請先執行下列工作:

估算來源的 QPS

假設直播有 100 萬名觀眾,CDN 會收到 100 萬個 QPS。假設 CDN 的快取命中率為 99.0%,則傳輸至 Cloud Storage 的流量將為 1%。每秒查詢次數為總觀看人數 (一百萬) 的 1%,也就是 10,000 次。這個值大於初始廣告訂單容量。

監控 QPS 並排解任何縮放錯誤

請監控 QPS,並排解任何縮放錯誤。詳情請參閱「Cloud Storage 監控總覽 」。如要監控讀取和寫入要求,請分別在Trusted Cloud 控制台中觀察「讀取/列出/取得要求總數」和「寫入要求總數」圖表。如果儲存區的每秒查詢次數擴增速度超過前一節所述的升速指南,可能會遇到 429 Too many requests 錯誤。瞭解如何解決「429 要求數量過多」錯誤。

估算來源的 QPS 後,請參閱下列章節,瞭解如何擴充 bucket,以提高 QPS。

預先暖機 bucket,在 bucket 上實作 QPS 擴縮功能

在直播活動前預先暖機值區,即可加快擴充程序。在直播活動開始前,請先產生與預期最大每秒查詢次數相符的合成流量,傳送至儲存空間,並考量 CDN 的預期快取命中率,將流量增加 50% 做為緩衝,確保 CDN 的原始伺服器能應付活動流量。舉例來說,如果預估來源的每秒查詢數為 10,000,則模擬流量應以每秒 15,000 項要求為目標,為來源做好活動準備。

對於這類模擬流量,您可以使用先前的活動即時動態饋給檔案 (例如區隔和資訊清單) 或測試檔案。請確保在暖機過程中,您有不同的檔案。

產生這類模擬流量時,請採取逐步擴充的做法,從每秒 5,000 個要求開始,逐步增加至目標值。請在活動前預留足夠時間,以達到預估負載。舉例來說,假設一開始每秒 5,000 個要求,每 20 分鐘負載量就會增加一倍,達到每秒 15,000 個要求大約需要 30 分鐘。

原始伺服器會維持容量,直到流量穩定為止。在 24 小時內,原始伺服器的容量會逐漸降至基準水準。如果來源伺服器在直播活動之間出現數小時的間隔,建議您在每個活動前模擬流量。

使用啟用階層命名空間的 bucket,以獲得高初始 QPS

啟用階層式命名空間的 Cloud Storage bucket,初始 QPS 是未啟用 HNS 的 bucket 的八倍。初始 QPS 越高,就越容易調度資料密集型工作負載,並提升總處理量。如要瞭解啟用階層式命名空間的 bucket 限制,請參閱「限制」一節。

避免使用連續名稱命名影片片段,以擴充 QPS

透過 QPS 資源調度,要求會重新分配至多個伺服器。不過,如果所有物件都使用非隨機或連續的前置字元,可能會遇到效能瓶頸。採用完全隨機的名稱,比使用連續名稱更能有效分配負載。不過,如果您想要在物件名稱中加入序號或時間戳記,只要在序號或時間戳記前加上雜湊值,就能達到隨機命名的效果。舉例來說,如果您想使用的原始物件名稱是 my-bucket/2016-05-10-12-00-00/file1,可以計算原始物件名稱的 MD5 雜湊值,然後將雜湊的前六個字元當做物件名稱的前置詞。新物件會變成 my-bucket/2fa764-2016-05-10-12-00-00/file1.。如需更多資訊,請參閱「善用命名慣例,將負載平均分配到各索引鍵範圍」。如果無法避免依序命名影片片段,請使用啟用階層式命名空間的 bucket,以取得較高的每秒查詢數 (QPS)。

為每場直播使用不同的值區

如果是同步直播,為每個直播使用不同的值區,有助於有效擴充讀取和寫入負載,不會達到值區的 IO 限制。為每個直播使用不同的 bucket,可減少因延遲擴展而造成的大型離群值延遲。

後續步驟