Upload gabungan paralel

Salah satu strategi untuk mengupload file besar dikenal sebagai upload gabungan paralel. Dalam upload jenis ini, file dibagi menjadi 32 bagian dan bagian tersebut diupload secara paralel dengan objek sementara, di mana objek akhir dibuat ulang menggunakan objek sementara, dan objek sementara juga akan dihapus.

Upload gabungan paralel bisa jauh lebih cepat jika kecepatan jaringan dan disk bukan merupakan faktor yang membatasi. Namun, objek akhir yang disimpan di bucket Anda adalah objek gabungan yang hanya memiliki hash crc32c, bukan hash MD5. Akibatnya, Anda harus menggunakan crcmod untuk melakukan pemeriksaan integritas saat mendownload objek dengan aplikasi Python. Anda hanya boleh melakukan upload komposit paralel jika hal berikut berlaku:

  • Semua pengguna Python, termasuk pengguna gsutil, yang perlu mendownload objek Anda, telah menginstal google-crc32c atau crcmod.

    Misalnya, jika Anda menggunakan Python untuk mengupload aset video yang hanya disalurkan oleh aplikasi Java, upload komposit paralel adalah pilihan yang baik karena ada implementasi CRC32C efisien yang tersedia di Java.

  • Anda tidak perlu memiliki hash MD5 pada objek yang diupload.

Cara alat dan API menggunakan upload komposit paralel

Bergantung pada cara Anda berinteraksi dengan Cloud Storage, upload komposit paralel mungkin dikelola secara otomatis untuk Anda. Bagian ini menjelaskan perilaku upload komposit paralel untuk berbagai alat dan memberikan informasi tentang cara mengubah perilaku tersebut.

Konsol

Konsol Google Cloud tidak melakukan upload komposit paralel

Command line

Anda dapat mengonfigurasi cara dan waktu gcloud storage cp melakukan upload gabungan paralel dengan mengubah properti berikut:

  • storage/parallel_composite_upload_enabled: Properti untuk mengaktifkan upload gabungan paralel. Jika False, nonaktifkan upload komposit paralel. Jika True atau None, lakukan upload komposit paralel untuk objek yang memenuhi kriteria yang ditentukan di properti lain. Setelan default-nya adalah None.

  • storage/parallel_composite_upload_compatibility_check: Properti untuk mengaktifkan pemeriksaan keamanan. Jika True, gcloud storage hanya melakukan upload gabungan paralel saat semua kondisi berikut terpenuhi:

    Perlu diperhatikan bahwa untuk memeriksa kondisi ini, gcloud CLI mengambil metadata untuk bucket tujuan sebagai bagian dari perintah upload.

    Jika False, gcloud storage tidak melakukan pemeriksaan apa pun. Setelan default-nya adalah True.

  • storage/parallel_composite_upload_threshold: Ukuran total file minimum untuk melakukan upload komposit paralel. Setelan defaultnya adalah 150 MiB.

  • storage/parallel_composite_upload_component_size: Ukuran maksimum untuk setiap objek sementara. Properti ini diabaikan jika total ukuran file sangat besar sehingga memerlukan lebih dari 32 bagian pada ukuran ini.

  • storage/parallel_composite_upload_component_prefix: Awalan yang digunakan saat memberi nama objek sementara. Properti ini dapat ditetapkan sebagai jalur absolut atau jalur yang terkait dengan objek akhir. Lihat deskripsi properti untuk mengetahui informasi selengkapnya. Awalan default-nya adalah jalur absolut /gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details.

Anda dapat mengubah properti ini dengan membuat konfigurasi bernama dan menerapkan konfigurasi tersebut per perintah menggunakan tanda lingkup project --configuration atau untuk semua perintah gcloud CLI menggunakan perintah gcloud config set.

Tidak diperlukan kapasitas disk lokal tambahan saat menggunakan gcloud CLI untuk melakukan upload komposit paralel. Jika upload komposit paralel gagal sebelum komposisi, jalankan kembali perintah gcloud CLI untuk memanfaatkan upload yang dapat dilanjutkan untuk objek sementara yang gagal. Setiap objek sementara yang berhasil diupload sebelum kegagalan tidak akan diupload ulang saat Anda melanjutkan upload.

Objek sementara diberi nama dengan cara berikut:

TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID

Dengan keterangan:

  • TEMPORARY_PREFIX dikontrol oleh properti storage/parallel_composite_upload_component_prefix.
  • RANDOM_VALUE adalah nilai numerik acak.
  • HEX_DIGEST adalah hash yang berasal dari nama resource sumber.
  • COMPONENT_ID adalah nomor urut komponen.

Umumnya, objek sementara dihapus di akhir upload komposit paralel. Namun, agar objek sementara tidak tertinggal, Anda harus memeriksa status keluar dari perintah gcloud CLI, dan Anda harus menghapus secara manual setiap objek sementara yang telah diupload sebagai bagian dari upload yang dibatalkan.

REST API

Baik JSON API maupun XML API mendukung upload potongan objek secara paralel dan digabungkan kembali menjadi satu objek menggunakan operasi compose.

Perhatikan hal-hal berikut saat mendesain kode untuk upload komposit paralel:

  • Saat menggunakan operasi compose, objek sumber tidak terpengaruh oleh proses penyusunan.

    Ini berarti bahwa jika dimaksudkan untuk sementara, Anda harus secara eksplisit menghapusnya setelah berhasil menyelesaikan komposisi, atau jika tidak, objek sumber akan tetap berada di bucket Anda dan akan ditagih sebagaimana mestinya.

  • Untuk mencegah perubahan objek sumber antara permintaan upload dan tulis, Anda harus memberikan nomor pembuatan yang diharapkan untuk setiap sumber.