2010-04-24 7 views
1

Je me demandais simplement quelle est la solution commune pour cela. Nous avons deux serveurs Web à charge équilibrée et un serveur séparé qui contient nos images. Notre processus actuel consiste en ce qu'un utilisateur télécharge une image directement sur le serveur Web (auquel ils sont connectés) et nous entrons un travail dans notre base de données. Un autre processus vérifie les travaux d'image toutes les quelques minutes et copie l'image du serveur Web jusqu'au serveur d'images.Image Télécharger directement du client au serveur distant? Spring/Tomcat

Le délai entre la mise en ligne d'un utilisateur et le moment où il est visible n'est pas idéal. Nous pourrions resserrer la boucle sur la fréquence à laquelle nous vérifions pour les travaux d'image, mais idéalement, je voudrais avoir des images téléchargées par l'utilisateur pour aller directement au serveur d'image plutôt que de copier deux fois. Comment cela devrait-il être fait? Y at-il quelque chose au printemps pour faire face à cela? On dirait que la plupart auraient affaire à un CDN je pense?

Je veux limiter le temps qu'il faut pour une image qu'un utilisateur télécharge est disponible sur notre site ...

Répondre

0

Donnez simplement à la webapp un accès direct au serveur d'images afin qu'elle puisse enregistrer instantanément l'image sur le serveur d'images. Je ne vois pas en quoi cela constitue un problème.

+0

"accès direct au serveur d'images" Que voulez-vous dire? Comment feriez-vous littéralement cela avec apache/tomcat/java? – Prem

+0

Soit par mappage de disque réseau pour que vous puissiez y accéder comme sur un système de fichiers disque local, soit par FTP en installant un serveur FTP sur la machine imageserver (FileZilla?) Et en utilisant un client FTP pour envoyer l'image (Apache Commons Net FTPClient?). – BalusC

0

Vous pouvez insérer l'image lors du téléchargement dans votre base de données. Lorsque l'image est demandée et qu'elle n'est pas dans le système de fichiers, vous pouvez la sortir de DB et la synchroniser en même temps avec le système de fichiers. Si vous ne voulez pas conserver toutes les images dans la base de données, vous pouvez également la supprimer à la même étape.

+0

hmm, il semble que ce serait un peu moins de perforation pour toutes les demandes d'images. Il faudrait vérifier si le fichier est sur le disque à chaque fois (ou vérifier la base de données) puis décider quoi faire. Synchronisation à la demande pour un fichier de 3 Mo ne serait pas bien non plus? – Prem

+0

@Prem: Nous avons une solution comme celle-ci fonctionnant avec Apache. Apache offre la possibilité de spécifier une URL alternative lorsque le fichier d'origine n'est pas présent. Le transfert depuis la base de données ne vous atteint qu'une seule fois et le temps nécessaire à la copie sur le réseau local n'est probablement pas perceptible par rapport au temps nécessaire pour le diffuser sur Internet. – Dominik

+0

Hmm, nos machines sont hébergées donc le transfert a encore un peu de retard .. – Prem

Questions connexes