Un tas de nouveaux fichiers avec des noms de fichiers uniques "apparaissent" régulièrement 1 sur un serveur. (Comme des centaines de Go de nouvelles données par jour, la solution doit être évolutive en téraoctets. Chaque fichier fait plusieurs mégaoctets, jusqu'à plusieurs dizaines de mégaoctets.)
Il existe plusieurs machines qui traitent ces fichiers. (Des dizaines, si la solution est extensible à des centaines.) Il devrait être possible d' ajouter et de supprimer facilement de nouvelles machines.
Il existe des serveurs de stockage de fichiers de sauvegarde sur lesquels chaque fichier entrant doit être copié pour le stockage d'archivage. Les données ne doivent pas être perdues, tous les fichiers entrants doivent finir livrés sur le serveur de stockage de sauvegarde.
Chaque fichier entrant doit être livré à une seule machine pour traitement et doit être copié sur le serveur de stockage de sauvegarde.
Le serveur récepteur n'a pas besoin de stocker les fichiers après leur envoi.
Veuillez conseiller une solution robuste pour distribuer les fichiers de la manière décrite ci-dessus. La solution ne doit pas être basée sur Java. Les solutions Unix-way sont préférables.
Les serveurs sont basés sur Ubuntu, sont situés dans le même centre de données. Toutes les autres choses peuvent être adaptées aux exigences de la solution.
1 Notez que j'omets intentionnellement des informations sur la façon dont les fichiers sont transportés vers le système de fichiers. La raison en est que les fichiers sont envoyés par des tiers par plusieurs moyens hérités différents de nos jours (étrangement, via scp et via ØMQ). Il semble plus facile de couper l'interface inter-cluster au niveau du système de fichiers, mais si l'une ou l'autre solution nécessite réellement un transport spécifique - les transports hérités peuvent être mis à niveau vers celui-ci.