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 gabungan paralel jika hal berikut berlaku:

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

  • Setiap 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 ditayangkan oleh aplikasi Java, upload gabungan paralel merupakan pilihan yang baik karena memiliki implementasi CRC32C yang efisien yang tersedia di Java.

Cara alat dan API menggunakan upload gabungan 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 gabungan paralel. Jika True atau None, lakukan upload gabungan paralel untuk objek yang memenuhi kriteria yang ditentukan di properti lain. Setelan defaultnya 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:

    Perhatikan 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: Total ukuran file minimum untuk melakukan upload gabungan paralel. Setelan defaultnya adalah 150 MiB.

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

  • storage/parallel_composite_upload_component_prefix: Awalan yang digunakan saat memberi nama objek sementara. Properti ini dapat ditetapkan sebagai jalur absolut atau sebagai 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 memodifikasi properti ini dengan membuat konfigurasi bernama dan menerapkan konfigurasi per perintah menggunakan flag seluruh project --configuration atau untuk semua perintah gcloud CLI menggunakan perintah gcloud config set.

Tidak diperlukan ruang disk lokal tambahan saat menggunakan gcloud CLI untuk melakukan upload gabungan paralel. Jika upload gabungan paralel gagal sebelum penyusunan, 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.

Biasanya, objek sementara akan dihapus pada akhir upload gabungan paralel. Namun, agar tidak meninggalkan objek sementara, Anda harus memeriksa status keluar dari perintah gcloud CLI, dan Anda harus menghapus secara manual setiap objek sementara yang diupload sebagai bagian dari upload yang dibatalkan.

Library klien

Java

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Anda dapat melakukan upload gabungan paralel dengan menetapkan AllowParallelCompositeUpload ke true. Contoh:

import com.google.cloud.storage.transfermanager.ParallelUploadConfig;
import com.google.cloud.storage.transfermanager.TransferManager;
import com.google.cloud.storage.transfermanager.TransferManagerConfig;
import com.google.cloud.storage.transfermanager.UploadResult;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;

class AllowParallelCompositeUpload {

  public static void parallelCompositeUploadAllowed(String bucketName, List<Path> files)
      throws IOException {
    TransferManager transferManager =
        TransferManagerConfig.newBuilder()
            .setAllowParallelCompositeUpload(true)
            .build()
            .getService();
    ParallelUploadConfig parallelUploadConfig =
        ParallelUploadConfig.newBuilder().setBucketName(bucketName).build();
    List<UploadResult> results =
        transferManager.uploadFiles(files, parallelUploadConfig).getUploadResults();
    for (UploadResult result : results) {
      System.out.println(
          "Upload for "
              + result.getInput().getName()
              + " completed with status "
              + result.getStatus());
    }
  }
}

Node.js

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Library klien Node.js tidak mendukung upload komposit paralel. Sebagai gantinya, gunakan upload multibagian XML API.

Python

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Library klien Python tidak mendukung upload komposit paralel. Sebagai gantinya, gunakan upload multibagian XML API.

REST API

JSON API dan XML API mendukung upload bagian objek secara paralel dan menggabungkannya kembali menjadi satu objek menggunakan operasi compose.

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

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

    Artinya, jika objek tersebut dimaksudkan untuk bersifat sementara, Anda harus secara eksplisit menghapusnya setelah berhasil menyelesaikan penyusunan, atau objek sumber akan tetap berada di bucket Anda dan akan ditagih sesuai penggunaan.

  • Untuk melindungi dari perubahan pada objek sumber antara permintaan upload dan penyusunan, Anda harus memberikan nomor pembuatan yang diharapkan untuk setiap sumber.