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

Java Discussion :

Persistance et Notification pour une Application Haute performance


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Par défaut Persistance et Notification pour une Application Haute performance
    Je débute en JAVA et me lance dans le développement d'une application assez grosse. J'ai quand même quelques années d’expérience en conception d'applications sous d'autres framework.

    Je viens demander quelques avis et conseils.

    Il s'agit d'une application client/serveur. Client Flash et serveur JAVA. La conception ressemble beaucoup à un jeu vidéo multijoueur. Les serveurs seront très sollicités, le temps de latence est un des facteurs clé de réussite du projet.

    Je pars sur le principe de charger toutes les données en RAM sous forme d'objets JAVA.
    A chaque mise à jour d'un champ d'un objet par un client, je dois :
    - Sauvegarder la modification sur le serveur SQL
    - Prévenir les clients concernés de la modification, (notification)

    Notez qu'il s'agit bien d'une interaction au niveau du champ (comme un google spreadsheet). Pas de l'objet entier.

    J'ai commencé par concevoir sur papier mon propre système de persistance/notification avant de me rendre compte qu'un outil faisait déjà une partie du boulot (je pense à Hibernate pour la persistance).

    Du coup j'ai envisagé d'utiliser Hibernate pour la mise à jour SQL mais quand je vois la couche qu'il rajoute, avec tout les appels à la réflexion, je crains que ce soit lent. En tout cas plus lent que de créer un thread asynchrone qui gère son pool de connexions. J'aimerai savoir si Hibernate fait des UPDATES intelligemment en n'envoyant que les champs modifiés ou si il sauve tout l'objet à chaque fois.

    Quels systèmes de persistance et de notification existent et fonctionnent en asynchrone (dans leur propre thread) ?

    J'ai aussi regardé du coté des frameworks dédiés multi-utilisateurs, du type SmartFox qui offrent des outils intéressants. Quelqu'un l'à déjà utilisé ?

    [edit] J'ai corrigé le post suite à la remarque de Nemek (merci)

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Ce tu appelles "réplication" est généralement appelé "notification". "réplication" faisant plutôt référence à la modification entre serveurs.

    Hibernate est un peu lourd mais si tu lances tes updates dans des threads séparés, tu ne devrais pas avoir plus de problème. Pense à utiliser une file pour garder l'ordre des modifications.

    Sinon tu as des framework plus light comme iBatis. Mais rien ne sera aussi optimale que de générer toi même les requêtes SQL
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Par défaut
    Merci Nemek.

    Connais-tu des frameworks qui gèrent la notification ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Le client étant en Flash, je ne pourrais pas t'aider n'ayant jamais utilisé cette technologie.

    En revanche, le principe est souvent le même.
    • Client : dans un thread séparé, envoyer une requête au serveur (avec un timeout aussi long que possible)
    • Serveur : attendre d'avoir quelque chose à notifier au client.
    • Client : soit tu pars en timeout et tu renvoies la requête ; soit tu reçois une réponse du serveur et tu fais les update.

    En fonction du besoin en réactivité le serveur peut bufferiser (empiler/entasser) plusieurs notifications avant de les envoyer au client.
    Pense à bien gérer côté client la parallélisation des requêtes.

    La meilleur solution (si c'est possible) reste d'ouvrir une socket "serveur" c'est-à-dire une socket qui écoute sur un port, envoyer au serveur les "coordonnées" de la socket. Le serveur gère la liste des sockets pour chaque client. Quand tu dois envoyer une notification, tu parcours la liste. Il faut penser à un système qui "purge" les sockets aux déconnexions "spontannées" et "imprévues"
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 04h25
  2. [2.x] Notification pour une application
    Par aymen trabelsi dans le forum Symfony
    Réponses: 5
    Dernier message: 08/04/2014, 01h10
  3. Réponses: 0
    Dernier message: 22/05/2009, 19h31
  4. [Compilation] A quel moment pour une application ?
    Par Rick1602 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/03/2004, 21h36

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