Eine Strategie zum Hochladen großer Dateien wird als parallele zusammengesetzte Uploads bezeichnet. Bei einem solchen Upload wird eine Datei in bis zu 32 Blöcke aufgeteilt. Die Blöcke werden parallel zu temporären Objekten hochgeladen, das endgültige Objekt wird mithilfe der temporären Objekte neu erstellt und die temporären Objekte werden gelöscht.
Parallele zusammengesetzte Uploads können erheblich schneller sein, wenn Netzwerk- und Laufwerksgeschwindigkeit keine einschränkenden Faktoren darstellen. Das letzte in Ihrem Bucket gespeicherte Objekt ist jedoch ein zusammengesetztes Objekt, das nur einen crc32c-Hash und keinen MD5-Hash hat. Deshalb müssen Sie zum Ausführen von Integritätsprüfungen crcmod verwenden, wenn Sie das Objekt mit Python-Anwendungen herunterladen. Sie sollten parallele zusammengesetzte Uploads nur ausführen, wenn Folgendes zutrifft:
Jeder Python-Nutzer, einschließlich gsutil-Nutzer, der Ihre Objekte herunterladen muss, hat entweder google-crc32c oder crcmod installiert.
Wenn Sie beispielsweise Python verwenden, um Video-Assets hochzuladen, die nur von einer Java-Anwendung bereitgestellt werden, sind parallele zusammengesetzte Uploads eine gute Wahl, da in Java effiziente CRC32C-Implementierungen verfügbar sind.
Die hochgeladenen Objekte müssen keinen MD5-Hash haben.
Wie Tools und APIs parallele zusammengesetzte Uploads verwenden
Abhängig davon, wie Sie mit Cloud Storage interagieren, werden parallele zusammengesetzte Uploads möglicherweise automatisch in Ihrem Namen verwaltet. In diesem Abschnitt wird das parallel zusammengesetzte Uploadverhalten für verschiedene Tools beschrieben und Sie erfahren, wie Sie das Verhalten ändern können.
Console
Die Google Cloud Console führt keine parallelen zusammengesetzten Uploads aus.
Befehlszeile
Sie können festlegen, wie und wann gcloud storage cp
parallele zusammengesetzte Uploads ausführt. Dazu geben Sie folgende Attribute an:
storage/parallel_composite_upload_enabled
: Attribut zum Aktivieren paralleler zusammengesetzter Uploads. WirdFalse
festgelegt, werden parallele zusammengesetzte Uploads deaktiviert. MitTrue
oderNone
können Sie parallele zusammengesetzte Uploads für Objekte ausführen, die die in den anderen Attributen definierten Kriterien erfüllen. Die Standardeinstellung istNone
.storage/parallel_composite_upload_compatibility_check
: Attribut zum Aktivieren/Deaktivieren von Sicherheitsprüfungen. WennTrue
, führtgcloud storage
nur parallele zusammengesetzte Uploads durch, wenn alle der folgenden Bedingungen erfüllt sind:- Die Speicherklasse für das hochgeladene Objekt ist
STANDARD
. - Für den Ziel-Bucket gibt es keine Aufbewahrungsrichtlinie.
- Im Ziel-Bucket sind keine Standard-Objekt-Holds aktiviert.
Die gcloud CLI ruft zur Prüfung dieser Bedingungen die Metadaten für den Ziel-Bucket als Teil des Uploadbefehls ab.
Bei
False
führtgcloud storage
keine Prüfungen aus. Die Standardeinstellung istTrue
.- Die Speicherklasse für das hochgeladene Objekt ist
storage/parallel_composite_upload_threshold
: Die minimale Gesamtgröße der Datei für einen parallelen zusammengesetzten Upload. Die Standardeinstellung ist 150 MiB.storage/parallel_composite_upload_component_size
: Die maximale Größe für jedes temporäre Objekt. Das Attribut wird ignoriert, wenn die Datei insgesamt so groß ist, dass mehr als 32 Blöcke dieser Größe erforderlich wären.storage/parallel_composite_upload_component_prefix
: Das Präfix, das beim Benennen temporärer Objekte verwendet wird. Dieses Attribut kann entweder als absoluter Pfad oder als Pfad relativ zum endgültigen Objekt festgelegt werden. Weitere Informationen finden Sie in der Attributbeschreibung. Das Standardpräfix ist der absolute Pfad/gcloud/tmp/parallel_composite_uploads/see_gcloud_storage_cp_help_for_details
.
Um diese Attribute zu ändern, erstellen Sie eine benannte Konfiguration und wenden diese entweder mit dem projektweiten Flag --configuration
pro Befehl oder für alle gcloud CLI-Befehle mit dem gcloud config set
-Befehl an.
Wenn Sie mit gcloud CLI parallele zusammengesetzte Uploads ausführen möchten, benötigen Sie keinen zusätzlichen lokalen Speicherplatz. Wenn ein paralleler zusammengesetzter Upload vor der Zusammensetzung fehlschlägt, führen Sie den gcloud CLI-Befehl noch einmal aus, um den fehlgeschlagenen Upload der temporären Objekte fortzusetzen. Alle temporären Objekte, die vor dem Fehler erfolgreich hochgeladen wurden, werden beim Fortsetzen des Uploads nicht noch einmal hochgeladen.
Temporäre Objekte werden so benannt:
TEMPORARY_PREFIX/RANDOM_VALUE_HEX_DIGEST_COMPONENT_ID
Wobei:
TEMPORARY_PREFIX
wird vom Attributstorage/parallel_composite_upload_component_prefix
gesteuert.RANDOM_VALUE
ist ein zufälliger numerischer Wert.HEX_DIGEST
ist ein Hash, der vom Namen der Quellressource abgeleitet wird.COMPONENT_ID
ist die fortlaufende Nummer der Komponente.
Im Allgemeinen werden temporäre Objekte am Ende eines parallelen zusammengesetzten Uploads gelöscht. Damit keine doppelten temporären Objekte zurückbleiben, sollten Sie über den gcloud CLI-Befehl den Exit-Status prüfen und alle temporären Objekte, die Teil eines abgebrochenen Uploads waren, manuell löschen.
Clientbibliotheken
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Sie können parallele zusammengesetzte Uploads ausführen, indem Sie AllowParallelCompositeUpload
auf true
setzen.
Beispiel:
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Die Node.js-Clientbibliothek unterstützt keine parallelen zusammengesetzten Uploads. Verwenden Sie stattdessen mehrteilige XML API-Uploads.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Die Python-Clientbibliothek unterstützt keine parallelen zusammengesetzten Uploads. Verwenden Sie stattdessen mehrteilige XML API-Uploads.
REST APIs
Sowohl die JSON API als auch die XML API unterstützen das parallele Hochladen von Objektblöcken und das Zusammenführen in einem einzelnen Objekt mit dem compose
-Vorgang.
Beachten Sie beim Entwickeln von Code für parallele zusammengesetzte Uploads Folgendes:
Wenn Sie den
compose
-Vorgang verwenden, sind die Quellobjekte vom Zusammensetzungsprozess nicht betroffen.Wenn sie also temporär sein sollen, müssen Sie sie explizit löschen, nachdem die Zusammensetzung erfolgreich abgeschlossen wurde. Andernfalls verbleiben die Quellobjekte in Ihrem Bucket und werden entsprechend in Rechnung gestellt.
Um zu verhindern, dass Quellobjekte in der Zeit zwischen dem Hochladen und der Anfrage zur Zusammensetzung geändert werden, sollten allen Quellobjekten plausible Generierungsnummern zugewiesen werden.