要求比率和存取權分配指南

Cloud Storage 是一項可高度擴充的服務,採用自動調整資源配置技術,能有效達到極高的要求比率。這個頁面將說明資源調度的最佳做法,以及如何充分發揮 Cloud Storage 支援的效能。

自動調整資源配置

Cloud Storage 屬於多用戶群服務,意思是多個使用者要共用同一組基礎資源。為了充分利用這些共用資源,值區的初始 IO 容量大約為每秒 1,000 次寫入要求及每秒 5,000 次讀取要求;一個月平均可寫入 2.5 PB 及讀取 13 PB 的物件 (每物件單位為 1 MB)。當特定值區的要求比率不斷增加,Cloud Storage 會將要求負載分配給多個伺服器,自動提高該值區的 IO 容量。

負載重新分配時間

值區達到 IO 容量限制時,Cloud Storage 通常會數分鐘偵測一次,並根據當下情況將負載重新分配給更多伺服器。因此,要是您值區要求比率的增加速度快過 Cloud Storage 進行上述重新分配作業的速度,系統就可能會出現暫時限制,特別是會有延遲時間變長、錯誤率提高的問題。如要避免遇到延遲或錯誤,請按照下文指示逐漸提高要求比率。

物件索引鍵編列

Cloud Storage 支援一致的物件清單編列,這項功能可讓使用者輕鬆對 Cloud Storage 執行資料處理工作流程。為了提供一致的物件清單編列,Cloud Storage 會仔細維護每個值區的物件索引鍵清單。這份索引清單按字典編列順序儲存,要是值區內有物件寫入或刪除,清單也會一併更新。新增或刪除索引鍵落在小範圍索引列的物件,很容易導致出現爭用情況的機率提高。

Cloud Storage 會偵測這類爭用情況,並自動將受影響索引範圍的負載重新分配到多個伺服器。這個做法就像是調度值區的 IO 容量資源,存取新範圍的索引時 (例如按新的前置詞寫入物件),您應按照下文指示逐漸提高要求比率;否則可能會出現延遲時間增加及錯誤率提高的暫時性問題。

最佳做法

以下部分介紹如何逐步提高要求比率、選擇物件索引鍵,以及重分配要求來避免值區出現暫時限制。

逐漸提高要求比率

為確保 Cloud Storage 的自動調整資源配置功能可以發揮最佳效能,您應找出數週內要求比率不高或有新物件索引鍵範圍的值區,再逐漸提高這些值區的要求比率。不過如果您的要求比率低於每秒 1,000 次寫入要求或每秒 5,000 次讀取要求,就不需要採取逐步提高的做法。假如您預期要求比率會超過以上門檻,應該先從稍低或接近門檻值的要求比率開始,接著再以不少於 20 分鐘的間隔來逐步加倍要求比率。

如果您遇到諸如延遲時間變長或錯誤率增加這類的問題,請先暫停逐步提高要求比率,或先降低要求比率,讓 Cloud Storage 有更充裕的時間可以調度您的值區資源。收到 Cloud Storage 傳回回應碼為 5xx 或 429 的錯誤時,請使用指數輪詢來重試要求。

善用命名慣例,將負載平均分配到各索引鍵範圍

使用依編號或時間戳記順序排列的名稱時,索引範圍的自動調整資源配置作業會變慢。這是因為要求會不斷轉移到新的索引範圍,導致重新分配負載困難重重且缺乏效率。

如果想要維持高要求比率,請避免使用依序排列的名稱。採用完全隨機的物件命名慣例,可以讓負載分配發揮最佳效益。如果您想要在物件名稱中加入序號或時間戳記,只要在序號或時間戳記前加上雜湊值,就能達到隨機命名的效果。

舉例來說,您原本想用的物件名稱是:

my-bucket/2016-05-10-12-00-00/file1
my-bucket/2016-05-10-12-00-00/file2
my-bucket/2016-05-10-12-00-01/file3
...

您可以計算原始物件名稱的 MD5 雜湊值,然後將雜湊的前 6 個字元當做物件名稱的前置詞。這樣一來,新的物件名稱就變成:

my-bucket/2fa764-2016-05-10-12-00-00/file1
my-bucket/5ca42c-2016-05-10-12-00-00/file2
my-bucket/6e9b84-2016-05-10-12-00-01/file3
...

在共用前置詞後加上隨機值,調度資源的範圍將限於該前置詞之內

請注意,隨機字串不一定要安排在物件名稱的開頭;就算是放在共用前置詞後面,系統也能自動調整資源配置,只不過效果將限於該前置詞的範圍內,值區其餘部分則不納入考量。

例如:

my-bucket/images/animals/4ce4c6af-6d27-4fa3-8a91-5701a8552705/1.jpg
my-bucket/images/animals/9a495e72-1d85-4637-a243-cbf3e4a90ae7/2.jpg
...
my-bucket/images/landscape/585356ac-ce89-47a8-bdd2-78a86b58fee6/1.jpg
my-bucket/images/landscape/2550ae5b-395e-4243-a29b-bbf5aece60ef/2.jpg
...
my-bucket/images/clouds/1.jpg
my-bucket/images/clouds/2.jpg
...

上述命名可讓系統有效地自動調度 images/animalsimages/landscape, 內的物件資源,但無法調度 images/clouds 的資源。

在依序排列的前置詞後加上隨機值的效果不大

如同上文所述,在共用前置詞後面加上隨機字串,只對該前置詞下的自動調整資源配置有幫助;而一旦要求轉移到新的前置詞,先前這個自動調整資源配置的好處也就無用武之地。尤其是前置詞採順序格式時,還可能會遇到一些問題。

舉例來說,假設您每小時在新的時間戳記前置詞下寫入一次檔案:

my-bucket/2016-05-10-00/cf9a7b95-0d2e-4466-9596-840ff388ddbd
my-bucket/2016-05-10-00/f1e16a88-16b8-4c66-ba66-a225c87be80c
my-bucket/2016-05-10-00/646d8272-4a88-4dc2-b2d4-d537c778df41
...
my-bucket/2016-05-10-01/bdcba6de-ac25-4c27-8550-0d08f249e69d
my-bucket/2016-05-10-01/a32c867c-09a9-4d65-9668-ddd4ebe4138b
my-bucket/2016-05-10-01/d619485c-5243-4a4e-8ef3-0f7e1d26ce1d
...

就算自動調整資源配置長時間下來有助於提高某前置詞下的寫入比率,但是該比率在每小時一開始都會重設。這就會導致寫入比率效能欠佳,且延遲時間及錯誤率也會定期增加。如果您某段時間內需要在不同的前置詞下寫入檔案,請務必將新前置詞平均分配到整個索引鍵範圍,以免發生上述問題。

重新排序大量作業,將負載平均分配到索引鍵範圍

有時候您可能會想在 Cloud Storage 中大量上傳或刪除資料;不管是上傳或刪除,您可能都無法變更物件名稱。不過,您倒是可以決定上傳或刪除物件的順序,讓寫入或刪除比率儘可能達到最高。

如果要這麼做,您應將上傳或刪除作業分配給多個前置詞。舉例來說,假設您每個資料夾下有很多資料夾和檔案待上傳,從多個資料夾平行上傳,再隨機選擇已上傳的資料夾及檔案,這會是比較好的策略。這個做法能讓系統在整個索引鍵範圍更平均分配負載,進而讓您在初次提高比率後達到高要求比率。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁