上傳大型檔案的其中一種策略稱為「平行複合式上傳」。在這種上傳方式中,檔案會分成最多 32 個區塊,這些區塊會平行上傳至臨時物件,最終物件會使用臨時物件重新建立,而臨時物件則會刪除。
如果網路和磁碟速度不是限制因素,平行複合物件上傳速度會大幅加快;不過,儲存在值區中的最終物件是複合物件,只有 crc32c 雜湊,沒有 MD5 雜湊。 因此,使用 Python 應用程式下載物件時,必須使用 crcmod 執行完整性檢查。只有在符合下列條件時,才應執行平行複合式上傳:
您不需要上傳的物件具有 MD5 雜湊。
任何需要下載物件的 Python 使用者 (包括 gsutil 使用者),都必須安裝 google-crc32c 或 crcmod。
舉例來說,如果您使用 Python 上傳影片素材資源,但這些素材資源只由 Java 應用程式放送,那麼平行複合上傳就是不錯的選擇,因為 Java 提供效率極高的 CRC32C 實作。
工具和 API 如何使用平行複合式上傳
視您與 Cloud Storage 的互動方式而定,系統可能會自動為您管理平行複合上傳作業。本節說明不同工具的平行複合上傳行為,並提供如何修改行為的資訊。
控制台
Google Cloud 控制台不會執行平行複合式上傳。
指令列
您可以修改下列屬性,設定 gcloud storage cp
執行平行複合式上傳作業的方式和時間:
storage/parallel_composite_upload_enabled
:用於啟用平行複合上傳的屬性。如果False
,請停用平行複合式上傳。如果是True
或None
,請針對符合其他屬性所定義條件的物件,執行平行複合上傳作業。預設設定為None
。storage/parallel_composite_upload_compatibility_check
:用於切換安全檢查的屬性。如果True
,gcloud storage
只會在符合下列所有條件時,執行平行複合式上傳:請注意,如要檢查這些條件,gcloud CLI 會在執行上傳指令時,一併擷取目的地 bucket 的中繼資料。
如果
False
,gcloud storage
就不會執行任何檢查。預設設定為True
。storage/parallel_composite_upload_threshold
:執行平行複合上傳作業的檔案大小下限。預設值為 150 MiB。storage/parallel_composite_upload_component_size
:每個暫時物件的大小上限。如果檔案總大小過大,導致需要超過 32 個區塊,系統就會忽略該屬性。storage/parallel_composite_upload_component_prefix
:用於命名暫時物件的前置字串。這個屬性可以設為絕對路徑,也可以設為相對於最終物件的路徑。詳情請參閱屬性說明。預設前置字串為絕對路徑/gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details
。
您可以建立具名設定,然後使用--configuration
專案範圍標記,為每個指令套用設定,也可以使用 gcloud config set
指令,為所有 gcloud CLI 指令套用設定,藉此修改這些屬性。
使用 gcloud CLI 執行平行複合上傳作業時,不需要額外的本機磁碟空間。如果平行複合式上傳在組合前失敗,請再次執行 gcloud CLI 指令,針對失敗的暫時物件使用可續傳的上傳功能。如果上傳作業在失敗前已成功上傳任何暫時物件,當您繼續上傳時,這些物件不會重新上傳。
臨時物件的命名方式如下:
TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID
其中:
TEMPORARY_PREFIX
由storage/parallel_composite_upload_component_prefix
屬性控制。RANDOM_VALUE
是隨機數值。HEX_DIGEST
是從來源資源名稱衍生而來的雜湊值。COMPONENT_ID
是元件的序號。
一般來說,平行複合上傳作業結束時,系統會刪除暫時物件,但為避免留下暫時物件,您應檢查 gcloud CLI 指令的結束狀態,並手動刪除因上傳作業中止而上傳的任何暫時物件。
用戶端程式庫
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
您可以將 AllowParallelCompositeUpload
設為 true
,執行平行複合式上傳。
例如:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js 用戶端程式庫不支援平行複合上傳。請改用 XML API 多部分上傳作業。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python 用戶端程式庫不支援平行複合上傳。請改用 XML API 多部分上傳作業。
REST API
JSON API 和 XML API 都支援平行上傳物件區塊,並使用 compose
作業將這些區塊重組為單一物件。
設計平行複合式上傳的程式碼時,請注意下列事項: