Bonjour,
Je me renseigne sur la manière concevoir un serveur qui puisse tenir la charge avec énormement de clients connectés en même temps (dans les 3k ou 4k utilisateurs).
Je réfléchis à la manière d'implémenter l'architecture d'un serveur de jeux massivement multi-joueurs. Pour l'instant je me concentre uniquement sur le chat.
J'ai déja réalisé des mini-serveus multi-threads de tchat , je trouve le concept du muti-thread pas mal . Mais habituellement ce qu'on voit sur tous les exemples sur le net ou ce que l'on nous enseigne en cours c'est de créer un thread pour chaque client qui se connecte au serveur, et c'est ce thread qui sera en charge de la communication pour le client.
Le soucis que je vois dans une architecture comme celle-ci , c'est que si on a 4k clients qui se connectent au serveur , il va falloir créer 4k threads , et que le système devra switcher entre tous les threads , dans ces conditions je pense que le serveur sera incapable de tenir la charge ?
Combien de threads un gros serveur( 2*quadri coeurs) peut supporter avant que les performances s'effondrent ?
J'ai entendu parler des "pools de thread" , es que cela pourrait résoudre le problème , comment cela s'utilise t'il ?
Peutêtre que l'utilisation des threads n'est pas une bonne solution dans ce genre de problème ? dans ce cas quel type d'architecture utiliser ?
Dans les mmo on voit souvent plusieurs "serveurs" ou l'on se connecte qui sont indépendants.
Je voyais la gestion d'un serveur de mmo comme cela :
Plusieurs petits serveurs logiciels qui prennent en charge chaque aspect du jeux mais qui tournent tous sur le meme serveur matériel.
- Serveur logiciel (processus donc) pour la prise en charge du tchat.
- Un autre pour la gestion des déplacements et des combats
- Un autre pour la gestion d'une base de donnée
(Dans ce cas commnent ils communiquent entre eux ?)
Ou alors es qu'en fait ce sont plusieurs serveurs mais qui sont cachés à l'utilisateur qui n'en voit qu'un seul .
Ou enfin tout est dans un seul processus qui tourne sur une seul machine. Dans ce cas comment les différents modules sont ils gérés , avec des threads ou encore un autre système peutêtre ?
J'espère qu'il y aura quelques membres du forum calé dans ce domaine, et je vous remercie d'avance pour vos réponses .
(je post ici car je développe en java)
Partager