上傳大型檔案的其中一種策略稱為「平行複合式上傳」。在這種上傳方式中,檔案會分成最多 32 個區塊,這些區塊會平行上傳至臨時物件,最終物件會使用臨時物件重新建立,而臨時物件則會刪除。
如果網路和磁碟速度不是限制因素,平行複合物件上傳速度會大幅加快;不過,儲存在值區中的最終物件是複合物件,只有 crc32c 雜湊,沒有 MD5 雜湊。 因此,使用 Python 應用程式下載物件時,必須使用 crcmod 執行完整性檢查。只有在符合下列條件時,才應執行平行複合式上傳:
您不需要上傳的物件具有 MD5 雜湊。
任何需要下載物件的 Python 使用者 (包括 gsutil 使用者),都必須安裝 google-crc32c 或 crcmod。
舉例來說,如果您使用 Python 上傳影片素材資源,但這些素材資源只由 Java 應用程式放送,那麼平行複合上傳就是不錯的選擇,因為 Java 提供效率極高的 CRC32C 實作。
工具和 API 如何使用平行複合式上傳
視您與 Cloud Storage 的互動方式而定,系統可能會自動為您管理平行複合上傳作業。本節說明不同工具的平行複合上傳行為,並提供如何修改行為的資訊。
控制台
Trusted 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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
您可以將 AllowParallelCompositeUpload
設為 true
,執行平行複合式上傳。
例如:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Node.js 用戶端程式庫不支援平行複合上傳。請改用 XML API 多部分上傳作業。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Python 用戶端程式庫不支援平行複合上傳。請改用 XML API 多部分上傳作業。
REST API
JSON API 和 XML API 都支援平行上傳物件區塊,並使用 compose
作業將這些區塊重組為單一物件。
設計平行複合式上傳的程式碼時,請注意下列事項: