IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Architecture communication serveur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Architecture communication serveur
    Bonjour, Dans le cadre de mon travail, je suis en charge de moderniser les échanges clients serveurs pour nos applications afin de rendre le tout plus rapide.

    Actuellement, nous avons une plateforme permettant d’héberger et créer des sites web sur différents serveurs distantsdans notre parc. La plateforme web doit pouvoir communiquer avec chacun des serveurs pour demander une installation, demander une modification du paramétrage, changer les accès sur le ftp, etc.. Toutes les commandes à exécuter sont des scripts shell, le php se chargeant de générer un fichier XML contenant le script à envoyer ainsi que les différents paramètres. Le serveur envoie ensuite une réponse à la plateforme qui se charge de l’interpréter en php pour avertir le client. Tout ceci fonctionne correctement actuellement mais est horriblement lent. Le système qui avait été choisi était un système de cron se chargeant de transférer les fichiers XML (exécuté toutes les 5 minutes).

    Il y a 4 étapes :

    • 1) Création du fichier de requête en XML sur le serveur de la plateforme.
    • 2) Un cron passe, lit les requêtes en attente, se connecte en ftp à chacun des serveurs qui ont une requête à exécuter et transfère le fichier dessus.
    • 3) Un cron passe sur chacun des serveurs, lit les requêtes en attente et demande l’exécution shell.
    • 4) Exécution Shell
    • 5) Génération d’une réponse XML
    • 6) Un cron passe pour vérifier les réponses en attente, se conencte en ftp à la plateforme et transfère les fichiers
    • 7) Un cron passe pour interpréter la réponse et avertir le client final.



    Chaque cron passe à un intervalle de 2 minutes et il y a 4 crons. Il peut donc y avoir au maximum un délai de 8 minutes entre l’envoi de la requête et la réponse.

    L’idée est d’accélérer le processus en se passant des crons et en ayant un vrai dialogue en direct entre php sur le serveur de la plateforme et chacun des serveurs distants. La plateforme envoie instantanément une requête au serveur distant qui exécute le bon script shell et qui renvoie une réponse dès que fini. Je viens donc à la pêche aux infos sur les différentes technologies permettant de réaliser ceci simplement. J’ai regardé du côté de node.js ou phpMQ pour gérer la communication serveur mais si vous connaissez des bonnes technos à ce sujet je suis preneur.

    Merci du coup de main

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    une 1re étape serait d'utiliser le format JSON à la place de XML, il prend 20 % de place en moins que le XML en moyenne donc cela permet aussi de transférer les données un peu plus rapidement.

    ensuite est ce que les commandes lancée sur le serveur ont besoin de plusieurs minutes pour se finaliser ?
    si c'est plus rapide, chaque traitement peut se faire en une seule requête HTTP. par exemple :
    1. la plateforme (qui est donc cliente) lance une requête HTTP https://serveur1/traitements/changeAccesFTP
    2. le serveur fait le traitement à la réception de la requête HTTP
    3. le serveur renvoie le résultat du traitement dans la réponse de la requête HTTP


    pour le choix du langage, n'importe lequel côté serveur peut faire l'affaire. ça peut être PHP, node.js, etc.
    le langage peut même être différent sur chaque serveur si c'est nécessaire.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Salut,
    Les scripts Shell s'exécutant en arrière plan peuvent prendre de 1 à 10 minutes selon le type de script. Changer un vhost ne va pas prendre le même temps que de créer le site et toute sa configuration la première fois.
    Je me suis renseigné sur différentes technos et l'utilisation du protocole MQTT (RabbitMq par exemple) semble bien correspondre à ce que je recherche.

    Je pense que le temps d'exécution des scripts shell risque de poser problème en utilisant une requête HTTP. C'est par contre une bonne idée d'utiliser Json plutôt que XML pour gagner en rapidité et place sur le serveur, je vais le mettre en place dans un premier temps pour moderniser ça.
    Concernant le langage je suis dans l'obligation d'utiliser PHP ou un appel à une API ou webservice côté front pour pas casser trop de choses avec le code historique. Côté serveur, je peux installer ce que je souhaite sur chacun des serveurs. Je trouvais l'idée d'utiliser un broker et une file de messages plutôt sexy pour résoudre le problème.

  4. #4
    Nb
    Nb est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 148
    Points : 417
    Points
    417
    Par défaut
    Bonjour,
    Si c'est le "l'orchestration" par les crontab que tu trouves trop longue tu peux passer par des connexions ssh (j'imagine que tes serveurs sont tous accessible en ssh) et des transfert de fichiers en SCP.
    J'ai jamais testé mais je pense que quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@host "nohup ton_shell_qui_genere_le_xml.sh > /dev/null 2>&1 &"
    devrait pouvoir te permettre de lancer ton shell sur les serveurs (ou la placteforme pour le programme qui traite les réponses).

    Ca sous entend que tout ton parc et ta plateforme acceptent les connexions SSH et que tu puissent modifier les 2 programmes qui generent les XML (requete et réponse) pour y declancher les transferts et les connexions ssh.
    Ce n'est qu'un exemple simple mais qui te fera economiser les temps d'attente des crontab à chaque fois.

Discussions similaires

  1. [servlet][http] communication serveur/client
    Par amel666 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/02/2006, 07h05
  2. [Architecture] communication client/serveur client/client
    Par daed dans le forum Général Java
    Réponses: 4
    Dernier message: 28/01/2006, 23h23
  3. MySQL en architecture client/serveur
    Par KinF dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/09/2005, 22h10
  4. [Indy] Architecture Client/Serveur
    Par yongblood dans le forum Web & réseau
    Réponses: 9
    Dernier message: 22/08/2005, 01h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo