L'une des stratégies de téléchargement de fichiers volumineux est appelée téléchargement d'objets en plusieurs parties.
Dans ce type de téléchargement, les requêtes GET
sont effectuées par plages en parallèle, en stockant des données dans un fichier de destination temporaire préalloué. Une fois toutes les parties terminées, le fichier temporaire est renommé en tant que fichier de destination.
Le téléchargement d'objets en plusieurs parties peut être considérablement plus rapide si la vitesse du réseau et du disque ne sont pas des facteurs limitants. Toutefois, les téléchargements d'objets en plusieurs parties entraînent plusieurs écritures à différents emplacements sur le disque. Par conséquent, cette stratégie de téléchargement peut dégrader les performances des disques présentant des temps de recherche lents, en particulier lors du fractionnement d'un téléchargement en beaucoup de parties. Les outils tels que la Google Cloud CLI possèdent des valeurs par défaut faibles pour le nombre de parties qu'ils créent afin de minimiser les risques d'impact sur les performances.
Les téléchargements d'objets en parties doivent toujours utiliser une somme de contrôle (CRC32C) facilement composable pour vérifier l'intégrité des données des parties. Pour effectuer des téléchargements d'objets en plusieurs parties, des outils tels que gcloud CLI nécessitent une version compilée de crcmod sur la machine effectuant le téléchargement. Si la version compilée de crcmod n'est pas disponible, gcloud CLI effectue à la place des téléchargements d'objets non divisés en plusieurs parties.
Utilisation des téléchargements d'objets en plusieurs parties par les outils et les API
Selon votre manière d'interagir avec Cloud Storage, les téléchargements d'objets en plusieurs parties peuvent être gérés automatiquement en votre nom. Cette section décrit le comportement des téléchargements d'objets en plusieurs parties pour différents outils et fournit des informations sur la façon dont vous pouvez modifier ce comportement.
Console
La console Google Cloud n'effectue pas de téléchargements d'objets en plusieurs parties.
Ligne de commande
Par défaut, gcloud storage cp
active les téléchargement d'objets en plusieurs parties.
Vous pouvez contrôler quand et comment gcloud CLI effectue des téléchargements d'objets en plusieurs parties en modifiant les paramètres suivants :
storage/sliced_object_download_threshold
: taille totale minimale des fichiers pour effectuer le téléchargement d'un objet en plusieurs parties. Vous pouvez désactiver tous les téléchargements d'objets en plusieurs parties en définissant cette valeur sur0
.storage/sliced_object_download_max_components
: nombre maximal de parties à utiliser dans le téléchargement. Définissez0
pour n'avoir aucune limite. Dans ce cas, le nombre de parties est déterminé uniquement parstorage/sliced_object_download_component_size
.storage/sliced_object_download_component_size
: taille cible de chaque partie de téléchargement. Cette propriété est ignorée si la taille totale du fichier est si importante que le téléchargement de parties de cette taille nécessiterait plus de parties que ce qui est autorisé, tel que défini dansstorage/sliced_object_download_max_components
.
Vous pouvez modifier ces propriétés en créant une Configuration nommée et en appliquant la configuration soit pour chaque commande à l'aide de l'option --configuration
à l'échelle du projet, soit pour toutes les commandes gcloud CLI à l'aide de la commande gcloud config set
.
Aucun espace disque local supplémentaire n'est requis lorsque vous utilisez gcloud CLI pour effectuer des téléchargements d'objets en plusieurs parties. Si le téléchargement échoue avant la fin, exécutez à nouveau la commande gcloud CLI pour reprendre les parties qui ont échoué. Les parties qui ont été téléchargées avant l'échec ne sont pas téléchargées lorsque vous effectuez une nouvelle tentative, sauf dans le cas où l'objet source a changé entre les tentatives de téléchargement.
Les objets téléchargés temporairement apparaissent dans le répertoire de destination avec le suffixe _.gstmp
dans leur nom.
Bibliothèques clientes
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Vous pouvez effectuer des téléchargements d'objets segmentés en définissant AllowDivideAndConquer
sur true
.
Exemple :
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Vous pouvez effectuer des téléchargements d'objets segmentés à l'aide de la méthode downloadFileInChunks
. Exemple :
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Vous pouvez effectuer des téléchargements d'objets segmentés à l'aide de la méthode download_chunks_concurrently
. Exemple :
API REST
L'API JSON et l'API XML sont compatibles avec les requêtes GET
par plages, ce qui signifie que vous pouvez utiliser l'une ou l'autre de ces API pour mettre en œuvre votre propre stratégie de téléchargement d'objets en plusieurs parties.
Afin d'empêcher la corruption des données en raison de l'évolution de l'objet source lors du téléchargement, vous devez fournir le numéro de génération de l'objet source dans chaque requête de téléchargement d'une partie de l'objet.