Un outil pour accélérer le téléchargement de grandes quantités de petits fichiers
Ce projet est issu d'un jeu auquel j'ai joué auparavant. Il téléchargeait un grand nombre de petits fichiers lors de la mise à jour de la version. Cependant, il n'y avait pas d'optimisation, donc la vitesse était très lente. J'ai donc réfléchi à l'existence d'un moyen d'optimisation. le scénario de téléchargement d'un grand nombre de petits fichiers. Après une idée simple, j'ai eu cette idée, puisque la vitesse de téléchargement est lente car il y a trop de petits fichiers, puis mettez-les tous dans un seul gros fichier. , la vitesse de téléchargement des fichiers volumineux peut théoriquement atteindre la pleine bande passante !
Le principe du projet est de lier directement un grand nombre de petits fichiers dans un fichier bloc, puis de générer un catalogue. Le client télécharge le fichier bloc via le catalogue et restaure le fichier localement en fonction de la taille et du chemin du fichier. Les caractéristiques de HTTP Range
peuvent également provoquer une interruption. Cliquez pour vous reconnecter et télécharger une fonction de fichier.
Accédez aux versions pour télécharger les dernières versions binaires client et serveur.
Déployer le serveur
Placez le fichier binaire dans n'importe quel répertoire et créez un dossier assets
dans le même répertoire
Placez les petits fichiers qui doivent être téléchargés plus rapidement dans n'importe quel dossier du dossier assets
, tel que assets/example
Démarrez le serveur. Lorsque le serveur démarre, il créera automatiquement des fichiers d'empaquetage pour tous les sous-dossiers du répertoire assets
et créera catalog.json
pour eux.
Le serveur affiche le message Server started at http://0.0.0.0:8080
ce qui signifie que le démarrage est terminé.
Télécharger des fichiers via le client
Placez les fichiers binaires dans n'importe quel répertoire
Entrez client <CatalogAddr>
pour commencer le téléchargement du fichier. <CatalogAddr>
est l'adresse de téléchargement de catalog.json
, qui sera automatiquement générée au démarrage du serveur. Supposons que le chemin du fichier de votre serveur est assets/example
, alors l'adresse du catalogue est http://localhost:8080/example/catalog.json
Les fichiers téléchargés seront automatiquement enregistrés dans le dossier download
La construction nécessite Golang >= 1.22.2
Installer les dépendances
vas-y, range-toi
Construire le serveur
allez construire ./cmd/server/
Créer un client
allez construire ./cmd/client/
Importer un package
go get -u github.com/nijinekoyo/miyako
Instructions sur l'emballage
paquet/catalogue
Utilisé pour créer et analyser des catalogues, veuillez consulter la documentation de l'API
paquet/bloc
Utilisé pour générer des blocs de fichiers et télécharger des blocs de fichiers, veuillez consulter la documentation de l'API
Ce projet est distribué sous le contrat MIT License