Caricamenti compositi paralleli

Una strategia per il caricamento di file di grandi dimensioni è chiamata caricamenti composti paralleli. In questo tipo di caricamento, il file viene diviso in un massimo di 32 blocchi, i blocchi vengono caricati in parallelo agli oggetti temporanei, l'oggetto finale viene ricreato utilizzando gli oggetti temporanei e gli oggetti temporanei vengono eliminati.

I caricamenti composti in parallelo possono essere molto più rapidi se la velocità di rete e del disco non sono fattori limitanti. Tuttavia, l'oggetto finale archiviato nel bucket è un oggetto composito, che ha solo un hash crc32c e non un hash MD5. Di conseguenza, devi utilizzare crcmod per eseguire i controlli di integrità quando scarichi l'oggetto con applicazioni Python. Dovresti eseguire caricamenti composti paralleli solo se si applica quanto segue:

  • Per qualsiasi utente Python, compresi gli utenti gsutil, che deve scaricare i tuoi oggetti, è installato google-crc32c o crcmod.

    Ad esempio, se utilizzi Python per caricare asset video pubblicati solo da un'applicazione Java, i caricamenti composti paralleli sono una buona scelta perché in Java sono disponibili implementazioni di CRC32C efficienti.

  • Non è necessario che gli oggetti caricati abbiano un hash MD5.

In che modo strumenti e API utilizzano i caricamenti composti paralleli

A seconda di come interagisci con Cloud Storage, i caricamenti composti paralleli potrebbero essere gestiti automaticamente per tuo conto. Questa sezione descrive il comportamento del caricamento composito parallelo per strumenti diversi e fornisce informazioni su come modificarne il comportamento.

Console

La console Google Cloud non esegue caricamenti composti paralleli

Riga di comando

Puoi configurare come e quando gcloud storage cp esegue caricamenti compositi paralleli modificando le seguenti proprietà:

  • storage/parallel_composite_upload_enabled: proprietà per l'abilitazione di caricamenti composti paralleli. Se False, disabilita i caricamenti composti compositi paralleli. Se True o None, esegui caricamenti composti in parallelo per gli oggetti che soddisfano i criteri definiti nelle altre proprietà. L'impostazione predefinita è None.

  • storage/parallel_composite_upload_compatibility_check: proprietà per attivare/disattivare i controlli di sicurezza. Se True, gcloud storage esegue caricamenti compositi paralleli solo quando sono soddisfatte tutte le seguenti condizioni:

    Tieni presente che, per verificare queste condizioni, l'gcloud CLI recupera i metadati per il bucket di destinazione come parte del comando di caricamento.

    Se False, gcloud storage non esegue alcun controllo. L'impostazione predefinita è True.

  • storage/parallel_composite_upload_threshold: la dimensione minima totale del file per eseguire un caricamento composito parallelo. L'impostazione predefinita è 150 MiB.

  • storage/parallel_composite_upload_component_size: la dimensione massima di ciascun oggetto temporaneo. La proprietà viene ignorata se le dimensioni totali del file sono così grandi da richiedere più di 32 blocchi con questa dimensione.

  • storage/parallel_composite_upload_component_prefix: il prefisso utilizzato per la denominazione degli oggetti temporanei. Questa proprietà può essere impostata come percorso assoluto o relativo all'oggetto finale. Per ulteriori informazioni, consulta la descrizione della proprietà. Il prefisso predefinito è il percorso assoluto /gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details.

Puoi modificare queste proprietà creando una configurazione con nome e applicando la configurazione per singolo comando utilizzando il flag a livello di progetto --configuration oppure per tutti i comandi dell'interfaccia a riga di comando gcloud mediante il comando gcloud config set.

Non è necessario spazio su disco locale aggiuntivo quando si utilizza gcloud CLI per eseguire caricamenti composti paralleli. Se un caricamento composito parallelo non riesce prima della composizione, esegui di nuovo il comando gcloud CLI per sfruttare i caricamenti ripristinabili per gli oggetti temporanei non riusciti. Gli oggetti temporanei che sono stati caricati correttamente prima dell'errore non vengono ricaricati quando riprendi il caricamento.

Gli oggetti temporanei vengono denominati nel seguente modo:

TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID

Dove:

  • TEMPORARY_PREFIX è controllato dalla proprietà storage/parallel_composite_upload_component_prefix.
  • RANDOM_VALUE è un valore numerico casuale.
  • HEX_DIGEST è un hash derivato dal nome della risorsa di origine.
  • COMPONENT_ID è il numero sequenziale del componente.

In genere, gli oggetti temporanei vengono eliminati al termine di un caricamento composito parallelo, ma per evitare di lasciare oggetti temporanei, devi controllare lo stato di uscita dal comando gcloud CLI ed eliminare manualmente tutti gli oggetti temporanei caricati durante un caricamento interrotto.

API REST

Sia l'API JSON che l'API XML supportano il caricamento di blocchi di oggetti in parallelo e la ricombinazione in un unico oggetto utilizzando l'operazione compose.

Quando progetti il codice per caricamenti composti paralleli, tieni presente quanto segue:

  • Quando utilizzi l'operazione compose, gli oggetti di origine non sono interessati dal processo di composizione.

    Ciò significa che se sono destinati a essere temporanei, devi eliminarli esplicitamente dopo aver completato la composizione oppure gli oggetti di origine rimangono nel bucket e vengono fatturati di conseguenza.

  • Per evitare modifiche agli oggetti di origine tra le richieste di caricamento e di scrittura, devi fornire un numero di generazione previsto per ogni origine.