Bonjour,
J'aimerais développer une application qui serait comme une école virtuelle. C'est à dire que les élèves et les profs se connectent et rentrent dans l'école. Ils voient la liste des classes et peuvent rentrer dans une d'elles. Une fois dans une classe, ils peuvent chater (comme sur IRC par exemple), parler (tout le monde entend tout le monde), voir le prof par sa webcam ou encore tous dessiner au tableau.
Tout ceci sera centralisé sur un serveur dédié.
On va imaginer que le logiciel plait à beaucoup de monde, il y a donc 200 classes et 2000 personnes connectées.
Je pense utiliser des QTcpSocket et un QtcpServer pour faire tout ça.
Quelle architecture choisir pour que le serveur soit efficace ?
Je pense que le plus simple pour éviter les blocages est d'utiliser des qthread partout : chaque client a sa socket sur un thread côté serveur, chaque classe a son thread, chaque chat audio aussi... Chaque thread est peu utilisé et passe le plus clair de son temps en attente donc je ne pense pas que l'utilisation CPU soit le problème (si ?). Le problème que je vois est l'utilisation mémoire : si chaque thread a une pile de 8Mo et qu'il y a 3000 threads ça va reserver 24Go.
Vaut-il mieux utiliser un autre procéder pour gérer la concurrence ? Avoir une serveur dédié avec directement 48Go de RAM ? Réduire la taille de la pile d'un thread ?
Merci d'avance si vous avez des idées.
Partager