Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme architecture

9 réponses
Avatar
logdenav
J'ai un java bean qui propage des evenements
Je souhaiterais propager ces evenements a des clients via le reseau
J'ai plusieurs solutions
- rmi callbacks ( trop lent ?)
- sockets (clients/serveurs avec petit protocole de communication)
- JMS ( je pense trop lent, non ?)
- ESB ??
- ....

J'ai develope une solution a base sockets (NIO) avec un petit protocol
de cummunication
Avec 1 client j'arrive a environ 70000 messages par secondes pour un
message de 10ko. mais si je mets 10 clients ca tombe a 9500 messages
pas secondes.

Il y a surement des solutions pour faire que les donnees soit
redondantes et que mes clients ne s'adressent pas tous a un serveur
unique mais je ne vois pas ( peut etre comme les serveurs de temps NTP
(grappes de serveurs)

Dans l'ideal il me faudrait une solution ou le nombde de clients ne
passe pas tomber les performances !!!!!

J'aurais a peu pres 100 utilisateurs abonnes a ce javabean
Quel serait pour vous la solution qui me garantirai le plus grand
nombre de messages par seconde
et ce pour un grand nombre d'utilisateurs

Merci de votre aide

9 réponses

Avatar
Rémy
a écrit dans le message de news:

J'ai un java bean qui propage des evenements
Je souhaiterais propager ces evenements a des clients via le reseau
J'ai plusieurs solutions
- rmi callbacks ( trop lent ?)
- sockets (clients/serveurs avec petit protocole de communication)
- JMS ( je pense trop lent, non ?)
- ESB ??
- ....

J'ai develope une solution a base sockets (NIO) avec un petit protocol
de cummunication
Avec 1 client j'arrive a environ 70000 messages par secondes pour un
message de 10ko. mais si je mets 10 clients ca tombe a 9500 messages
pas secondes.

Il y a surement des solutions pour faire que les donnees soit
redondantes et que mes clients ne s'adressent pas tous a un serveur
unique mais je ne vois pas ( peut etre comme les serveurs de temps NTP
(grappes de serveurs)

Dans l'ideal il me faudrait une solution ou le nombde de clients ne
passe pas tomber les performances !!!!!

J'aurais a peu pres 100 utilisateurs abonnes a ce javabean
Quel serait pour vous la solution qui me garantirai le plus grand
nombre de messages par seconde
et ce pour un grand nombre d'utilisateurs

Merci de votre aide



Si c'est possible, faire du broadcast.
Le serveur n'aura pas à répéter les messages pour chaque client (en fait le
serveur n'est même pas obligé de savoir s'il y a des clients).
Chaque client devra trier les messages qui l'intéresse.

Rémy

Avatar
alexandre cartapanis
J'ai un java bean qui propage des evenements
Je souhaiterais propager ces evenements a des clients via le reseau
J'ai plusieurs solutions
- rmi callbacks ( trop lent ?)
- sockets (clients/serveurs avec petit protocole de communication)
- JMS ( je pense trop lent, non ?)
- ESB ??
- ....

J'ai develope une solution a base sockets (NIO) avec un petit protocol
de cummunication
Avec 1 client j'arrive a environ 70000 messages par secondes pour un
message de 10ko. mais si je mets 10 clients ca tombe a 9500 messages
pas secondes.

Il y a surement des solutions pour faire que les donnees soit
redondantes et que mes clients ne s'adressent pas tous a un serveur
unique mais je ne vois pas ( peut etre comme les serveurs de temps NTP
(grappes de serveurs)

Dans l'ideal il me faudrait une solution ou le nombde de clients ne
passe pas tomber les performances !!!!!

J'aurais a peu pres 100 utilisateurs abonnes a ce javabean
Quel serait pour vous la solution qui me garantirai le plus grand
nombre de messages par seconde
et ce pour un grand nombre d'utilisateurs

Merci de votre aide



Utilise UDP et le broadcast de message.

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email

Avatar
logdenav
mes services sont tres differents, le broadcast me parait difficile.
Mon application est du genre application financiere ou l'on doit
s'abonner aux variations de prix d'actions en bourse.
Avatar
TestMan
Bjour,

La "lenteur" relative dont tu parles me semble plus à mettre sur le
compte de la négociation TCP (ou celle du service utilisé en supplément)
qu'autre chose : à vérifier en regardant les taux de charge CPU et la
charge réseau.

Donc en premier, il faut t'assurer que tes clients ne laissent pas
"tomber" le socket à chaque message, ensuite, si ce qui doit primer
c'est le nombre de clients "connectés", alors il faudra paradoxalement
envisager de travailler en mode IP non-connecté (UDP).

Teste JMS avec une implémentation utilisant par exemple de l'UDP (avec
une surcouche de qualité de service).
Plus ton message sera générique (un même message diffusé à un grand
nombre de personne), plus une telle solution sera performante ...

A+
TM

J'ai un java bean qui propage des evenements
Je souhaiterais propager ces evenements a des clients via le reseau
J'ai plusieurs solutions
- rmi callbacks ( trop lent ?)
- sockets (clients/serveurs avec petit protocole de communication)
- JMS ( je pense trop lent, non ?)
- ESB ??
- ....

J'ai develope une solution a base sockets (NIO) avec un petit protocol
de cummunication
Avec 1 client j'arrive a environ 70000 messages par secondes pour un
message de 10ko. mais si je mets 10 clients ca tombe a 9500 messages
pas secondes.

Il y a surement des solutions pour faire que les donnees soit
redondantes et que mes clients ne s'adressent pas tous a un serveur
unique mais je ne vois pas ( peut etre comme les serveurs de temps NTP
(grappes de serveurs)

Dans l'ideal il me faudrait une solution ou le nombde de clients ne
passe pas tomber les performances !!!!!

J'aurais a peu pres 100 utilisateurs abonnes a ce javabean
Quel serait pour vous la solution qui me garantirai le plus grand
nombre de messages par seconde
et ce pour un grand nombre d'utilisateurs

Merci de votre aide



Avatar
logdenav
Et si je souhaite absolument ne pas utiliser le broadcast ?
Avatar
alexandre cartapanis
Et si je souhaite absolument ne pas utiliser le broadcast ?

ben pourquoi?



--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email

Avatar
Rémy
a écrit dans le message de news:

Et si je souhaite absolument ne pas utiliser le broadcast ?



Alors les performances sont nécessairement fonction du nombre de clients.

Au mieux on peut optimiser côté serveur en ne calculant les messages qu'une
fois et en envoyant chaque message à tous les clients qui sont abonnés à ce
type de message. (Organiser les données en listes d'abonnés par message et
non en liste de messages par client).

Avatar
logdenav
Et pour le multicast y a t'il des solutions de controle de messages
(ESB, Protocols particuliers ?)
Avatar
TestMan
mes services sont tres differents, le broadcast me parait difficile.
Mon application est du genre application financiere ou l'on doit
s'abonner aux variations de prix d'actions en bourse.

Bonjour,


Justement, ton flux de diffusion c'est le prix d'un "élément de quoté".
(action, indice, etc)

Le prix varie avec le temps, et il est plus important d'avoir la toute
dernière quotation le plus rapidement possible.
Et le nombre d'éléments à quoter sont un "ensemble finis" alors que tu
souhaite le nombre d'utilisateur infini (le plus grand possible).

C'est un peu un cas d'école ;-)

Tu t'inscrie à un flux (topic JMS correspondant à la quotation
souhaitée). Ensuite ne reste plus qu'à ton application à attendre les
mise à jours et à ton serveur à les envoyer ;-)

Donc une solution JMS avec un support multicast fiabilisé (type
javagroups/jgroups) me parrait exactement convenir en terme d'archi.

Regarde par exemple :
http://www.activemq.org/
(1er resultat de ggl)

Bien sur ton appli a certainement d'autres besoin, et il te faudra
trouver les solutions correspondantes pour construire au final une archi
cohérente et fiable.

A+

TM