Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-02-2010 14:10:58

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[HS]Multi serveurs et upload

Une petite question. Ça existe de partout mais je trouve pas trop d'infos smile

Je vais devoir séparer une appli. de ses données physiques, donc classique, un serveur pour l'application, et un serveur de stockage.

Mon appli. va mettre à dispo une API qui pour certains cas d'utilisations nécessitera l'upload de fichiers image.

Classique encore, l'user upload une image, le serveur la renomme avec un uniqid, la fout dans un dossier temporaire, et si tout s'est bien déroulé il renvoie l'uniqid sur la sortie. Le client qui reçoit l'uniqid sait que c'est ok, il invoque donc une méthode de service (l'appli. donc) pour créer l'objet en base (photo avec titre par ex.) en passant avec l'uniqid de l'image temporaire. Le service manipule métier, invoque la persistance, retaille l'image si elle dépasse une taille limite définie (pixels) et la range en fonction de l'id inséré.

Sauf qu'avec deux serveurs distincts, ces opérations semblent difficilent.

La solution serait que le script du serveur de stockage retaille lui même l'image, renvoie un id, et que la méthode de service du serveur d'appli. invoque un autre script du serveur de stockage pour lui demander de déplacer et renommer le fichier. Mais ça veut dire que l'API doit se soucier du stockage et ça me semble en plus pas très sécurisé.

Comment vous faites ou comment feriez-vous ?

Merci ;-)

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#2 03-02-2010 15:09:53

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [HS]Multi serveurs et upload

Ces serveurs tournent sous quoi ?

Si ce sont des systèmes UNIX, tu peux monter un répertoire distant par SSH.
Tu as ton serveur de stockage avec un accès SSH, sur le serveur de ton API, tu montes un répertoire distant, par exemple :

Code:

sshfs toto@le-serveur-distant.org:/repertoire/des/donnees /repertoire/locale

Ton API peut travailler dans "/repertoire/locale" comme si c'était un répertoire physique, sauf qu'aucune donnée n'est écrite sur le serveur de ton API.

Il existe aussi "finefs" écrit en PHP qui permet la réplication de données, mais je ne pense pas que ce soit adapté à ton cas car les données restent en locale.

Ensuite, tout dépend des contraintes que tu as. Par exemple, si tu n'as pas d'accès SSH, s'il est obligatoire que ce soit ton API qui envoie les données vers le serveur de stockage, etc. cela fou ma solution en l'air wink

Hors ligne

 

#3 03-02-2010 15:28:52

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

Ta solution fonctionnerait à merveille avec un seul serveur de stockage.
Mais si t'en as plusieurs ? Ce qui arrivera sans doute.

En fait ça doit être un sacré bordel. Le problème est d'éviter tout transfert en doublons. Je me demande si c'est faisable en php, parce qu'il faudrait qu'à la réception de la requête avec le fichier, le script d'upload connaisse la dispo des serveurs de stockage et redirige la requête et le flux vers un des serveurs. J'ai un peu de mal à visualiser le truc, et je ne m'y connais pas assez en infrastructures réseaux sad


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#4 03-02-2010 15:48:18

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [HS]Multi serveurs et upload

Mais si t'en as plusieurs ? Ce qui arrivera sans doute.

Dans quel but exactement ?
1- Répartition de charge ?
2- Augmentation du stockage ?
3- Duplication de données en cas de crash ?

Parce que sinon les solutions diffères.
Par exemple, pour le 3, FineFS serait idéal.
Si c'est pour augmenter la taille du stockage, tu pourrai utiliser un seul serveur et y mettre une partition LVM, ce qui permet de redimensionner des partitions à chaud et sur plusieurs disques.
Pour la répartition de charge, je n'ai pas d'idée ^^

Je ne m'y connais pas vraiment, je te propose ce que j'ai pu lire via mes fluxs RSS, je n'ai jamais exploité ces solutions.

Hors ligne

 

#5 03-02-2010 16:54:57

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [HS]Multi serveurs et upload

Tu peux utiliser des techno comme nfs sur ton serveur unix pour partager les données sur le serveur applicatif de ton serveur de stockage.
Apres c'est transparent... tu a l'impression que les données sont sur ton serveur applicatif alors que non smile

Hors ligne

 

#6 03-02-2010 17:05:13

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

Je pense à l'augmentation du stockage. La duplication c'est encore autre chose smile

Si on prend un site comme facebook par ex. qui doit stocker des milliards de photos, que se passe-t'il au moment de l'upload ?

Je me demande si les photos sont uploadées sur un serveur puis ensuite déplacées ou si elles sont directement uploadées là où il faut. Dans tous les cas elles sont accessibles immédiatement après l'upload.

Dans le cas où elle sont déplacées par la suite, il faudrait que la routine qui les déplace accède à la base et mette à jour un champ contenant l'url du fichier.

Mais il existe sans doute des techniques réseau pour gérer tout ça, et autant j'adore l'archi et la prog, mais en réseau je suis un pauvre pégu (sauf truc de base sur linux quoi).


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#7 03-02-2010 17:10:46

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

@Phil :

Mais concrètement, au moment de l'upload il se passe quoi ? parce que c'est quand même HTTP qui va transférer le fichier la première fois.

Si par ex. j'ai trois serveurs OVH et 3 domaines/sous-domaines : www.ndd.com, img1.ndd.com, img2.ndd.com. Le fichier va forcément s'uploader sur le serveur qui reçoit la requête HTTP non ?

Dernière modification par Delprog (03-02-2010 17:13:02)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#8 03-02-2010 17:24:21

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [HS]Multi serveurs et upload

Je pense que les serveurs de stockage reçoivent le fichier "final", c'est-à-dire après tout traitement (redimensionnement, etc.).
Ensuite, ton API peux décider où sera stocké le fichier. Dans ce cas, il faut garder une trace du chemin, et donc sans doute un champ dans ta BDD avec une information (img2, img2.ndd.com, etc. la plus pratique/cohérente pour toi).
L'API envoie ensuite ce fichier sur le bon serveur.

Si on prend le solution du montage SSH, tu pourrai avoir des répertoires img1, img2 (en correspondance de tes sous-domaines) en locale où tu monterai les répertoires distants des deux machines. Ton API n'a plus qu'à stocker le fichier dans l'un de ces deux répertoires et enregistrer le nom en BDD.
Ensuite, lors de l'affichage, ton API n'a plus qu'à indiquer le nom du sous-domaine de la BDD suivit du domaine ($nom.ndd.com/$fichier en résumé). Le navigateur va se connecter sur le serveur intéressé.

Par contre dans ce cas, tes serveurs de stockage deviennent des mini-serveurs web.
Si tu veux les garder strictement en tant que serveur de stockage et rien d'autre, alors c'est le serveur de ton API qui doit récupérer le fichier demandé et le restitué au client, chemin inverse de l'upload.

Dernière modification par Blount (03-02-2010 17:25:01)

Hors ligne

 

#9 03-02-2010 17:55:41

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [HS]Multi serveurs et upload

Oué mais bon, si je comprend bien c'est ton serveur applicatif qui va recevoir la requete HTTP, tes serveurs de données img1 et img2 sont partagé en nfs sur l'applicatif donc pour toi c'est transparent..
Le serveur applicatif croit que c'est une partie de ton disque. Donc normalement tout devrait bien se passé smile

Je crois que tu peux même parallélisé le montage des dossier avec NFS4.1 a voir wink

Hors ligne

 

#10 04-02-2010 12:42:30

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

Hum, il reste quand même un truc qui m'échappe smile

L'API ne peut pas (et ne doit pas) gérer l'upload, on est d'accord ? Il y a forcément un "front" entre l'API est l'utilisateur, que ce soient des controlleurs ou des webservices.

L'API ne peut pas non plus connaitre la disponibilités des serveurs, et ne devrait pas s'en soucier.

Ça voudrait dire que le script qui réceptionne le fichier, renvoie l'url, mais aussi l'uniqid de l'image.

En fait à part ce processus :
- upload via un script en dehors de l'api, par ex. upload.ndd.com
- le script renvoie en sorti : le serveur qui a reçu le fichier et l'id du fichier (par ex. img1 et 9b63a4cb.jpg)
- le front invoque l'API en lui passant les infos qu'il a reçu
- l'API après l'ajout dans la persistance envoie une requête à je ne sais pas qui avec l'uniqd du fichier temporaire et le nouveau nom du fichier calculé avec l'ID en BDD pour demander le déplacement du fichier.

Imaginons que tous les serveurs ne sont pas sur le même réseau hein smile

Comment éviter un double transfert, et où interviendrait "nfs" là dedans ?

Il y a vraiment un truc que j'arrive pas à voir.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#11 04-02-2010 13:50:45

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [HS]Multi serveurs et upload

Ils utilisent un SAN. (je parie sur du Fiber channel)
Les noms de domaines différents sont la uniquement pour répartir la charge de serveur http
(plusieurs serveur http sur 1 SAN)

Dernière modification par nORKy (04-02-2010 13:51:50)


----
Gruiiik !

Hors ligne

 

#12 04-02-2010 14:28:00

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

Ha, là je comprend mieux.

Donc, si j'ai bien pigé, peu importe où le fichier est uploadé c'est comme si c'était un seul et unique disque dur.

Du coup, je peux tout gérer au même endroit, puisque les copies sont gérées par le contrôleur et n'affecte pas les ressources du serveur d'application.

Donc pendant le dév. il faut faire comme si on avait une seule et unique machine, pas besoin de se poser la question.


Tout faux ?

Merci pour l'info !

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#13 04-02-2010 14:40:41

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [HS]Multi serveurs et upload

Oui, le SAN, c'est du bas niveau, c'est comme si tu avais un seul disque dur (contrairement au NAS c'est au niveau ethernet) ; mais derrière, tu peux avcoir plusieurs baie de plusieurs disque, du réplicas et autre services diverses.
Le tous relié en fibre (débit de 8G sur la fibre)

Dans ma société, pour le serveur dédié, c'est ce qu'on fait. On déploie un serveur pour nos client sur une lame d'un HP blade, et le blade est relié au SAN.

Dernière modification par nORKy (04-02-2010 14:43:48)


----
Gruiiik !

Hors ligne

 

#14 04-02-2010 15:02:37

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

En fait, ce qui me turlupine le plus c'est que je suis une bite en réseau, nous n'avons pas encore planché sur ces problèmes là, au moment voulu nous ferons appels à des pro.

Mais en attendant quoi ? Je crée un dossier "store" au même niveau que mon application web, et je me pose pas la question ?


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#15 04-02-2010 15:21:00

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [HS]Multi serveurs et upload

le SAN, c'est pas à proprement parlé du réseau..

oui, crer un dossier store, après, éventuellement, tu changeras sont points de montage


----
Gruiiik !

Hors ligne

 

#16 25-02-2010 17:13:51

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [HS]Multi serveurs et upload

Salut,

Vite faite en passant, intéressant : voilà comment facebook gère les photos.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#17 06-03-2010 20:30:37

amaury
Nouveau membre
Date d'inscription: 06-03-2010
Messages: 1

Re: [HS]Multi serveurs et upload

Si quelqu'un veut mettre en place un cluster basé sur FineFS, n'hésitez pas à me contacter. Je serai content de vous apporter toute l'aide nécessaire (je suis le mainteneur du projet).
Pour toutes les infos sur FineFS : http://finefs.googlecode.com

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages