S3 Express One Zone 的效能指導方針和設計模式 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

S3 Express One Zone 的效能指導方針和設計模式

建置從 Amazon S3 Express One Zone 上傳和擷取物件的應用程式時,請依照我們的最佳實務指導方針來最佳化效能。若要使用 S3 Express One Zone 儲存類別,您必須建立 S3 目錄儲存貯體。S3 Express One Zone 儲存類別不支援搭配 S3 一般用途儲存貯體使用。

如需所有其他 Amazon S3 儲存類別和 S3 一般用途儲存貯體的效能指導方針,請參閱 最佳實務設計模式:最佳化 Amazon S3 效能

為了在使用 S3 Express One Zone 儲存類別和目錄儲存貯體時讓應用程式獲得最佳效能,建議採用下列指導方針與設計模式。

將 S3 Express One Zone 儲存與您的 AWS 運算資源共置

每個目錄儲存貯體都存放在您建立儲存貯體時選取的單一可用區域中。您可以透過在運算工作負載或資源所在位置的可用區域中建立新的目錄儲存貯體來著手進行。然後就能立即開始非常低延遲的讀取和寫入。目錄儲存貯體是最先讓您在 AWS 區域 中選擇可用區域的 S3 儲存貯體,可降低運算和儲存之間的延遲。

如果您在可用區域之間存取目錄儲存貯體,延遲將會增加。為了達到最佳效能,建議您盡可能從位於相同可用區域中的 Amazon Elastic Container Service、Amazon Elastic Kubernetes Service 和 Amazon Elastic Compute Cloud 執行個體存取目錄儲存貯體。

目錄儲存貯體

每個目錄儲存貯體每秒可支援數十萬筆交易 (TPS)。與一般用途儲存貯體不同的是,目錄儲存貯體是以階層方式將索引鍵組織成目錄,而非字首。字首是物件索引鍵名稱開頭的字元字串。您可以將字首視為以類似於目錄的方式組織資料的一種方式。但是,字首不是目錄。

字首會在一般用途儲存貯體內的平面命名空間中組織資料,而且一般用途儲存貯體內的字首數目並無限制。每個前綴每秒至少可達到 3,500 PUTPOST/DELETE或 5,500 個GET/HEAD請求。您也可以在多個字首之間平行處理請求以擴展效能。不過,在讀取和寫入操作的情況下,此擴展會逐漸發生,而不是立即發生。一般用途儲存貯體逐漸擴展到新的更高請求率時,您可能會收到一些 HTTP 狀態碼 503 (服務無法使用) 錯誤。

使用階層式命名空間時,物件索引鍵中的分隔符號非常重要。唯一支援的分隔符號為正斜線 (/)。目錄是以分隔符號邊界決定。例如,物件索引鍵 dir1/dir2/file1.txt 會產生目錄 dir1/ 並自動建立 dir2/,以及將物件 file1.txt 新增至路徑 dir1/dir2/file1.txt 中的 /dir2 目錄。

物件上傳至目錄儲存貯體時所建立的目錄沒有每個字首 TPS 的限制,而且會自動預先擴展以減少發生 HTTP 503 (服務無法使用) 錯誤的機會。這種自動擴展可讓您的應用程式視需要在目錄內和目錄之間平行處理讀取和寫入請求。

目錄儲存貯體水平擴展請求平行化

您可以向目錄儲存貯體發出多個並行請求,以將請求分散到不同的連線上來獲得最大可存取頻寬,藉此達到最佳效能。S3 Express One Zone 對於目錄儲存貯體的連線數沒有任何限制。當同一目錄發生大量並行寫入時,個別目錄可以水平和自動擴展效能。

一開始建立物件索引鍵且其索引鍵名稱包含目錄時,會自動為該物件建立目錄。後續物件上傳到同一個目錄時,就不需要建立目錄,這樣可以減少物件上傳至現有目錄的延遲。

雖然淺層和深層目錄結構都支援在目錄儲存貯體內儲存物件,但目錄儲存貯體會自動水平擴展,同時上傳至相同目錄或平行同級目錄時的延遲較低。

使用工作階段型身分驗證

S3 Express One Zone 和目錄儲存貯體支援新的工作階段型授權機制,可驗證和授權對目錄儲存貯體的請求。使用工作階段型身分驗證時,AWS SDK 會自動使用 CreateSession API 操作來建立臨時工作階段權杖,使用該權杖可對目錄儲存貯體進行低延遲的資料請求授權。

AWS SDK 使用 CreateSession API 操作請求臨時憑證,然後每 5 分鐘代表您自動建立和重新整理權杖。為了充分利用 S3 Express One Zone 儲存類別的效能優勢,我們建議您使用 AWS SDK 來啟動和管理 CreateSession API 請求。如需此工作階段型模型的詳細資訊,請參閱 CreateSession 授權

S3 其他檢查總和最佳實務

S3 Express One Zone 可讓您選擇用於在上傳或下載過程中驗證資料的檢查總和演算法選項。您可以選擇以下 Secure Hash 演算法 (SHA) 或循環宂餘檢查 (CRC) 資料完整性演算法之一:CRC32、CRC32C、SHA-1 和 SHA-256。S3 快速單區域儲存類別不支援以 MD5 為基礎的總和檢查碼。

CRC32 是 AWS SDK 對 S3 Express One Zone 來回傳輸資料時使用的預設檢查總和。我們建議您使用 CRC32 和 CRC32C,以獲得 S3 Express One Zone 儲存類別的最佳效能。

使用最新版 AWS SDK 和通用執行期程式庫

另外還有數種 AWS SDK 提供 AWS 通用執行期 (CRT) 程式庫,可進一步加快 S3 用戶端的效能。這些 SDK 包括 AWS SDK for Java 2.x、AWS SDK for C++ 和 AWS SDK for Python (Boto3)。CRT 型 S3 用戶端會自動使用分段上傳 API 操作和位元組範圍擷取功能來自動執行水平擴展連線,藉此提升對 S3 Express One Zone 來回傳輸物件時的效能和可靠性。

若要利用 S3 Express One Zone 儲存類別達到最高效能,建議您使用包含 CRT 程式庫的最新版 AWS SDK,或使用 AWS Command Line Interface (AWS CLI)。

效能故障診斷

對延遲敏感的應用程式重試請求

S3 Express One Zone 專為提供一致的高效能水準而打造,無需額外調整。但是,設定有利的逾時值和重試次數,可進一步協助實現一致的延遲和效能。AWS 開發套件具有可設定的逾時和重試值,您可以將它們調整為特定應用程式的容錯值。

AWS 通用執行期 (CRT) 程式庫和 Amazon EC2 執行個體類型配對

執行大量讀取和寫入操作的應用程式,可能會比未執行這些操作的應用程式需要更多的記憶體或運算能力。為要求高效能的工作負載啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時,請選擇符合應用程式所需資源量的執行個體類型。S3 Express One Zone 高效能儲存最適合搭配較大和較新的執行個體類型,這些類型具備更大量的系統記憶體,以及更強大的 CPU 和 GPU,可充分利用效能更高的儲存。我們也建議使用具備 CRT 能力的最新版 AWS SDK,如此就能更進一步加速讀取和寫入請求。

在 AWS SDK 中使用工作階段型身分驗證,而非 HTTP REST API

使用 Amazon S3 時,您也可以依循與 AWS SDK 相同的最佳實務,在使用 HTTP REST API 請求時最佳化效能。不過,採用 S3 Express One Zone 所使用的工作階段型授權和身分驗證機制時,我們強烈建議您使用 AWS SDK 來管理 CreateSession 及其受管工作階段權杖。AWS SDK 會代表您使用 CreateSession API 操作自動建立和重新整理權杖。使用 CreateSession 可縮短為了授權每個請求,對 AWS Identity and Access Management (IAM) 的每個請求往返延遲。