Segmentierte Objektdownloads

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Eine Strategie zum Herunterladen großer Dateien wird als Segmentierte Objektdownloads bezeichnet. Bei einem solchen Download werden zahlreiche GET-Anfragen parallel gestellt, wobei die Daten in einer temporären, vorab zugewiesenen Zieldatei gespeichert werden. Sobald alle Segmente mit dem Herunterladen abgeschlossen wurden, wird die temporäre Datei in die Zieldatei umbenannt.

Segmentierte Objektdownloads können deutlich schneller sein, wenn die Netzwerk- und Laufwerkgeschwindigkeit keine einschränkenden Faktoren sind. Allerdings verursachen segmentierte Objektdownloads mehrere Schreibvorgänge an verschiedenen Stellen des Laufwerks, sodass diese Download-Strategie die Leistung von Laufwerken mit langsamen Suchzeiten beeinträchtigen kann, insbesondere wenn ein Download in eine große Anzahl von Segmenten unterteilt wird. Tools wie gcloud und gsutil haben niedrige Standardwerte für die Anzahl der von ihnen erstellten Segmente, um die Wahrscheinlichkeit von Leistungseinbußen zu minimieren.

Segmentierte Objektdownloads sollten immer eine schnelle zusammensetzbare Prüfsumme (CRC32C) verwenden, um die Datenintegrität der Segmente zu überprüfen. Für die Durchführung von segmentierten Objektdownloads benötigen Tools wie gsutil und gcloud eine kompilierte Version von crcmod auf dem Computer, auf dem der Download durchgeführt wird. Wenn kompiliertes crcmod nicht verfügbar ist, führen gsutil und gcloud stattdessen nicht verwaltete Objektdownloads aus.

gcloud-Support

Standardmäßig aktiviert gcloud storage cp die segmentierten Objektdownloads. Sie können steuern, wie und wann gcloud segmentierte Objektdownloads ausführt, indem Sie die folgenden Attribute ändern:

  • storage/sliced_object_download_threshold: Die minimale Gesamtgröße der Datei für die Ausführung eines segmentierten Objektdownloads. Sie können alle segmentierten Objektdownloads deaktivieren. Setzen Sie dazu diesen Wert auf 0.

  • storage/sliced_object_download_max_components: Die maximale Anzahl an Segmenten, die im Download verwendet werden sollen. Legen Sie 0 für kein Limit fest. In diesem Fall wird die Anzahl der Segmente ausschließlich durch storage/sliced_object_download_component_size bestimmt.

  • storage/sliced_object_download_component_size: Die Zielgröße für jedes Download-Segment. Dieses Attribut wird ignoriert, wenn die Datei insgesamt so groß ist, dass für das Herunterladen von Slices dieser Größe mehr Slices als zulässig erforderlich sind, wie in storage/sliced_object_download_max_components festgelegt.

Um diese Attribute zu ändern erstellen Sie eine benannte Konfiguration und wenden die Konfiguration entweder mit dem projektweiten Flag--configuration pro Befehl oder für alle gcloud-Befehle mit dem gcloud config set-Befehl an.

Es wird kein zusätzlicher lokaler Laufwerksspeicher benötigt, wenn Sie gcloud für segmentierte Objektdownloads verwenden. Wenn der Download vor dem Abschluss fehlschlägt, führen Sie den gcloud-Befehl noch einmal aus, um die fehlgeschlagenen Segmente fortzusetzen. Segmente, die vor dem Fehler erfolgreich heruntergeladen wurden, werden beim erneuten Versuch nicht noch einmal heruntergeladen, es sei denn, das Quellobjekt wurde zwischen den Downloadversuchen geändert.

Temporäre heruntergeladene Objekte werden im Zielverzeichnis mit dem Suffix _.gstmp im Namen angezeigt.

Unterstützung von gsutil

Standardmäßig aktiviert gsutil cp die segmentierten Objektdownloads. Sie können steuern, wie und wann gsutil segmentierte Objektdownloads ausführt, indem Sie die folgenden Parameter ändern:

  • sliced_object_download_threshold: Die minimale Gesamtdateigröße für einen segmentierten Objektdownload. Sie können alle segmentierten Objektdownloads deaktivieren. Setzen Sie dazu diesen Wert auf 0.

  • sliced_object_download_max_components: Die maximale Anzahl der Segmente, die im Download verwendet werden sollen. Legen Sie 0 für kein Limit fest. In diesem Fall wird die Anzahl der Segmente ausschließlich durch sliced_object_download_component_size bestimmt.

  • sliced_object_download_component_size: Die Zielgröße für jedes Download-Segment. Dieser Parameter wird ignoriert, wenn die Datei insgesamt so groß ist, dass für das Herunterladen von Segmenten dieser Größe mehr Segmente erforderlich sind als zulässig, wie in sliced_object_download_max_components festgelegt.

Sie können diese Parameter entweder für jeden einzelnen Befehl mit der globalen Option -o oder für alle gsutil-Befehle durch Bearbeiten der Konfigurationsdatei .boto ändern.

Es wird kein zusätzlicher lokaler Laufwerksspeicher benötigt, wenn Sie gsutil für segmentierte Objektdownloads verwenden. Wenn der Download vor dem Abschluss fehlschlägt, führen Sie den gsutil-Befehl noch einmal aus, um die fehlgeschlagenen Segmente fortzusetzen. Segmente, die vor dem Fehler erfolgreich heruntergeladen wurden, werden nicht erneut heruntergeladen, wenn Sie den Befehl erneut ausführen.

Temporäre heruntergeladene Objekte werden im Zielverzeichnis mit dem Suffix _.gstmp im Namen angezeigt.

Unterstützung von JSON und XML

Sowohl die JSON API als auch die XML API unterstützen Bereichs-GET-Anfragen. Sie können also beide APIs verwenden, um Ihre eigene Strategie für einen segmentierten Objektdownload zu implementieren.

Um vor Datenbeschädigung durch das Ändern des Quellobjekts während des Downloads zu schützen, sollten Sie in jeder Download-Anfrage für ein Segment des Objekts die Generierungsnummer des Quellobjekts angeben.