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

Web & réseau Delphi Discussion :

Notifications entre machines


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut Notifications entre machines
    Bonjour à tous,

    je suis en train de plancher sur une truc et je cale un peu sur certains choix. Explication de ce que je veux faire :

    un process va recevoir un certain nombre de messages (notifications) de la part d'un certain nombre de sources.
    Ce process va devoir réémettre chacun de ces messages à un certain nombre de postes clients, éparpillés sur un WAN

    Le serveur devra potentiellement servir plusieurs centaines de postes. Le nombre de messages à transmettre n'est pas forcément important au début, mais opurrait augmenter si le système devient populaire...


    J'ai pensé à plusieurs solutions :

    • Multicast, mais il faut passer par des clients lourd (genre RDV) et je ne peux pas choisir cette solution.
    • TCP en mode connecté. Le problème c'est le nombre de connexions...
    • UDP : il risque d'y avoir des pertes, et du coup ça oblige à gérer des réémissions zet ça complique...
    • flux RSS et chaque client s'abonne
    • le serveur met à disposition un fichier, et le client va le lire (un fichier par client)


    Voila comme c'est aps trop mon domaine au départ (la programmation réseau) je suis un peu paumé...

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Pour le TCP, un serveur comme TServerSocket peut gérer 2000 connexions !
    En FMX, tu utiliserais surement TIdTCPServer ou TTCPServer (onglet internet, il est cross-plateforme)

    On a parlé de cette limite dans un autre sujet, cela peut s'augmenter dans Windows
    Ensuite, tu peux penser en répartition de charge !
    un client se connecte sur le serveur (juste un frontal), celui-ci lui indique l'IP et le Port d'un autre Serveur
    Ainsi, tu dépasse la limite sans problème en "routant\dispatchant" les connexions !
    les serveurs répartis discute entre-eux pour qu'un client 1 sur le serveur A puisse notifier le client 2 sur le serveur B



    Si tes clients sont accessibles de l'extérieur, tu peux inverser client et serveur !
    Le Serveur a une liste d'abonné (IP, URL, en WAN je ne me repère pas trop bien), il se connecte sur chacun, envoie l'info puis se déconnecte
    C'est ce que fait VNC ou PC Anywhere, en fait ce que l'on appelle l’Élève est un serveur en attente de connexion du client (le maître)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Les postes clients sont dans la même entreprise, masi disséminés un peu partout dans le monde via un WAN.

    En fait il y a de fortes chances pour que le serveur soit hébergé sur une machine UNIX. Donc on va dire que la problématique est plus théorique... Un serveur est-il capable de gérer plusieurs miliers de connexions TCP en même temps ?

    Ca gène au niveau réseau d'avoir un serveur qui a plus de 2000 connexions ouvertes ? Sachant qu'il est probable que il soit obligé d'émettre un message vers tous ses clients à la fois (j'utilise ça pour un système d'informations en temsp réel sur l'état d'une business chain) ?

    Pour le client ca sera beaucoup plus simple : il commencera par ouvrir une connexion TCP avec son serveur, et ensuite il reçoit les messages. L'ordre de réception n'importe pas.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Citation Envoyé par arkhamon Voir le message
    le serveur soit hébergé sur une machine UNIX.
    Donc tu vas le coder en autre chose que Delphi !
    Pour le TCP, je suppose qu'UNIX a aussi des limites par défaut, peut-être 2000 peut-être 10000, surement configurable dans un fichier .conf

    Pour avoir un peu pratiqué Fedora (Linux) et surtout Apache en fait, tu as des options partout, limite de Mo par thread, limite seconde par request ... idem MySQL, Mo par SQL, Mo par BLOB ...
    tu dois bien avoir limite Con par IP, Con par Port, Con par seconde ... au niveau de l'OS, faut aimer fouiller !

    Citation Envoyé par arkhamon Voir le message
    Ca gène au niveau réseau d'avoir un serveur qui a plus de 2000 connexions ouvertes ?
    Ben non, à un moment, ton serveur n'aura plus assez de RAM ou Thread disponibles, il faudra forcément déléguer à un autre serveur les connexions en trop (on en revient à un frontal qui réparti)

    Citation Envoyé par arkhamon Voir le message
    Sachant qu'il est probable que il soit obligé d'émettre un message vers tous ses clients à la fois ?
    Aucun soucis, même dans un modèle réparti, il suffit de notifier aux serveurs d'envoyer à tous leurs clients, le frontal lui est un chef d'orchestre, les serveurs répartis sont connectés sur lui (ou inversement) !
    Le Web c'est fait comme ça, des frontaux et des millions de serveurs, d'ailleurs si le frontal tombe, un serveur peut prendre sa place si éligible à ce rôle ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Donc tu vas le coder en autre chose que Delphi !
    Pour le TCP, je suppose qu'UNIX a aussi des limites par défaut, peut-être 2000 peut-être 10000, surement configurable dans un fichier .conf

    Pour avoir un peu pratiqué Fedora (Linux) et surtout Apache en fait, tu as des options partout, limite de Mo par thread, limite seconde par request ... idem MySQL, Mo par SQL, Mo par BLOB ...
    tu dois bien avoir limite Con par IP, Con par Port, Con par seconde ... au niveau de l'OS, faut aimer fouiller !
    effectivement la partie serveur sera probablement codée en autre chose que Delphi si c'est sous Unix.


    Citation Envoyé par ShaiLeTroll Voir le message
    Ben non, à un moment, ton serveur n'aura plus assez de RAM ou Thread disponibles, il faudra forcément déléguer à un autre serveur les connexions en trop (on en revient à un frontal qui réparti)
    Et on peut envisager une ouverture de connexion vers un poste, puis l'envoi, la fermeture de la cx et ainsi de suite sur plusierus milliers de postes ? a mon avis ça va ramer serieusement non ? En fait, j'ai pas forcément besoin de garder la connexion ouverte entre deux envois. Surtout que les envois peuvent très bien ne pas être réguliers...

    Citation Envoyé par ShaiLeTroll Voir le message
    Aucun soucis, même dans un modèle réparti, il suffit de notifier aux serveurs d'envoyer à tous leurs clients, le frontal lui est un chef d'orchestre, les serveurs répartis sont connectés sur lui (ou inversement) !
    Le Web c'est fait comme ça, des frontaux et des millions de serveurs, d'ailleurs si le frontal tombe, un serveur peut prendre sa place si éligible à ce rôle ...
    ouais mais là il s'agit pour un serveur d'émettre vers plusieurs miliers de postes le même message et si possible assez rapidement...

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Citation Envoyé par arkhamon Voir le message
    Et on peut envisager une ouverture de connexion vers un poste, puis l'envoi, la fermeture de la cx et ainsi de suite sur plusierus milliers de postes ?
    Cela suppose que les postes soient accessibles de l'extérieur, cela inverse le rôle ton programme UNIX dans ce cas serait un client se connectant sur une multitude de serveur

    Dans ce cas, c'est plus un multicast qu'il faudrait faire !
    Je n'ai aucune connaissance à ce sujet !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Types des reseaux entre machines linux ?
    Par donkeyquote dans le forum Réseau
    Réponses: 15
    Dernier message: 20/11/2008, 12h24
  2. Réponses: 7
    Dernier message: 13/05/2008, 09h36
  3. Partager dossiers entre machines GNU/Linux
    Par Thrystan dans le forum Réseau
    Réponses: 7
    Dernier message: 21/08/2006, 08h33
  4. Réponses: 1
    Dernier message: 02/05/2006, 21h33
  5. [ netstat ] surveillance entre machines pour demon mysql
    Par gogozep001 dans le forum Développement
    Réponses: 2
    Dernier message: 28/08/2003, 11h05

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