1


1

Comment mettre en œuvre une solution de téléchargement de fichiers distribués?

J’ai un site de téléchargement de fichiers qui repose actuellement sur un seul serveur, c’est-à-dire utilisant le même serveur pour les utilisateurs pour télécharger les fichiers et le même serveur pour la livraison de contenu.

Ce que je veux implémenter est un CDN (content delivery network). Je voudrais acheter une batterie de serveurs et si je devais avoir un mécanisme pour répartir les fichiers sur les différents serveurs, cela équilibrerait beaucoup mieux ma charge.

Cependant, j’ai quelques questions à ce sujet:

En supposant que ma batterie de serveurs se compose de 10 serveurs pour la livraison de contenu,

  1. Puisqu’à la fin de l’utilisateur, le script pour télécharger les fichiers sera un emplacement seulement, c’est-à-dire `` +, il doit résider sur un seul serveur, correct? Comment puis-je dupliquer le script sur plusieurs serveurs et diriger les données de téléchargement de fichiers de l’utilisateur vers le serveur avec le moins de charge?

  2. Comment dois-je déterminer les fichiers à envoyer à quel serveur? Pendant le processus de téléchargement, dois-je randomiser tous les fichiers pour aller sur des serveurs aléatoires? Si l’utilisateur envoie 10 fichiers, dois-je les envoyer à un serveur aléatoire? Existe-t-il un mécanisme pour les envoyer au serveur avec le moins de charge? Existe-t-il un autre algorithme qui peut aider à déterminer vers quel serveur les fichiers doivent être envoyés?

  3. Comment les fichiers seront-ils envoyés du serveur de téléchargement vers le CDN? En utilisant FTP? Cela n’introduirait-il pas une surcharge supplémentaire et la nécessité d’une capacité de vérification des erreurs pour vérifier la rupture de la connexion FTP et pour vérifier si le fichier a été transféré avec succès, etc.

1 Answer


3


En supposant que vous utilisez un serveur Apache, il existe un module appelé mod_proxy_balancer. Il gère tous les travaux d’équilibrage de charge en arrière-plan. L’utilisateur ne connaîtra jamais la différence - sauf lorsque leurs téléchargements et téléchargements sont 10 fois plus rapides.

  1. Si vous l’utilisez, vous pouvez en avoir une copie complète sur chaque serveur.

  2. * mod_proxy_balancer * s’en occupera pour vous.

  3. Chaque serveur peut avoir son propre sous-domaine. Vous aurez une base de données sur votre serveur «principal», qui associe toutes vos pages de téléchargement aux serveurs physiques sur lesquels elles se trouvent. Ensuite, une URL à la volée est transmise en fonction d’un algorithme de chiffrement de hachage, ce qui empêche d’utiliser un lien dur vers le téléchargement et augmente le nombre de visites sur votre page. Il peut s’agir d’un mélange d’informations personnelles et diverses, par exemple l’adresse IP des utilisateurs et l’heure de la journée. Le serveur de téléchargement vérifie ensuite les hachages et accepte ou refuse la demande.

Si tout est vérifié, le téléchargement démarre; votre charge est équilibrée; et les utilisateurs n’ont pas à se soucier de tout cela dans les coulisses.

_note: _ J’ai fait l’administration Apache et le développement web. Je n’ai jamais réussi un grand CDN, donc cela est basé sur ce que j’ai vu sur d’autres sites et d’autres connaissances. Quiconque a quelque chose à ajouter ici ou des corrections à apporter, veuillez le faire.

Mise à jour

Il y a aussi des entreprises qui le gèrent pour vous. Une simple Google search vous obtiendra une liste.