Bref dans ce cas. Tu va galérer, il te faut de la communication entre tes instance, une approche « asynchrone » au lieu des threads.
Tu peux essayer de t'amuser avec asio. Mais je te souhaite bonne chance, si c'est un projet perso ça peux être fun. En entreprise, utilise Erlang ou Python, l'un le supporte directement dans le langage, l'autre a des librairies très puissantes pour le faire.
Sérieusement... Qu'est-ce qu'il ne faut pas lire. boost::asio juste bien pour s'"amuser" dans "un projet perso" et pas adapté à une utilisation en entreprise ? Pour information, asio est utilisé dans le logiciel gérant les clusters Blue Gene/Q d'IBM. C'est un sacré projet perso, tu ne trouves pas ? Il y a aussi des tout petits projets libres comme la libtorrent et la libbitcoin qui s'appuient sur asio. Enfin, je te laisse consulter la liste des projets utilisant asio et c'est sans compter les dizaines de personnes qui l'utilisent quotidiennement dans un contexte propriétaire et fermé sans en faire la publicité.
Quant à ce tu racontes sur le fait qu'on a pas besoin d'avoir un langage performant pour écrire des serveurs parce qu'on peut faire passer à l'échelle l'architecture, scaler horizontalement comme on dit, c'est tellement à la mode, c'est juste n'importe quoi. Whaou, on peut faire du DNS round robin pour répartir la charge sur plusieurs serveurs. Bravo, mais on t'avait pas attendu pour ça. Dans le domaine du web, il y a un facteur 20 entre les frameworks les plus rapides et les frameworks les plus lents sur des tâches simples [1]. Administrer une ferme de 5 serveurs est beaucoup plus confortable qu'administrer une ferme de 100 serveurs. Quand ton architecture pour faire tourner ta jolie application twisted commence à nécessiter un adminsys à temps complet pour la faire tourner, tu réfléchis à la réécrire dans un autre langage. Hacker news est plein d'histoires de personnes en réécrivant leurs applications serveurs dans un langage compilé pour gagner en performance.
Oui, une application bien écrite en boost::asio scalera horizontalement aussi bien qu'une application écrite avec netty ou twisted. Oui, ce sera surement plus long à écrire, plus difficile à debugguer qu'une application Java ou Python. Mais ce sera aussi plus rapide, et tu auras un bien meilleur ratio performance/watt. Il y a un facteur 10 en moyenne en temps entre du Python et du C++ sur des tâches calculatoires. Rien que le fait qu'il existe une bonne douzaine de projets visant à accélérer le code Python montre bien qu'il y a parfois un problème de performance avec ce langage (qui par ailleurs offre une excellente expressivité). Bien sur ce serait génial d'avoir un langage aussi expressif que Python offrant les performances du C++, mais ça n'existe pas encore aujourd'hui.
Attention, je ne suis pas en train de dire que C++ est la panacée et qu'il faut toujours privilégier la solution la plus performante. Clairement si c'est pour une application web qui évolue tous les mois, vaut sûrement mieux l'écrire en Python. Si c'est le service/api web avec lequel ta start up fait du blé, peut-être que Java est la meilleure solution. Si tu veux écrire un système de stockage distribué performant devant tourner sur cluster, peut-être qu'il faut utiliser du C++. Parfois la performance est importante et le ratio performance/watt ou performance/euros est important.
[^] # Re: nosql embarqué ?
Posté par X345 . En réponse à la dépêche SQLite 3.8.0 : n'ayez pas peur du zéro. Évalué à 3.
Sérieusement... Qu'est-ce qu'il ne faut pas lire. boost::asio juste bien pour s'"amuser" dans "un projet perso" et pas adapté à une utilisation en entreprise ? Pour information, asio est utilisé dans le logiciel gérant les clusters Blue Gene/Q d'IBM. C'est un sacré projet perso, tu ne trouves pas ? Il y a aussi des tout petits projets libres comme la libtorrent et la libbitcoin qui s'appuient sur asio. Enfin, je te laisse consulter la liste des projets utilisant asio et c'est sans compter les dizaines de personnes qui l'utilisent quotidiennement dans un contexte propriétaire et fermé sans en faire la publicité.
Quant à ce tu racontes sur le fait qu'on a pas besoin d'avoir un langage performant pour écrire des serveurs parce qu'on peut faire passer à l'échelle l'architecture, scaler horizontalement comme on dit, c'est tellement à la mode, c'est juste n'importe quoi. Whaou, on peut faire du DNS round robin pour répartir la charge sur plusieurs serveurs. Bravo, mais on t'avait pas attendu pour ça. Dans le domaine du web, il y a un facteur 20 entre les frameworks les plus rapides et les frameworks les plus lents sur des tâches simples [1]. Administrer une ferme de 5 serveurs est beaucoup plus confortable qu'administrer une ferme de 100 serveurs. Quand ton architecture pour faire tourner ta jolie application twisted commence à nécessiter un adminsys à temps complet pour la faire tourner, tu réfléchis à la réécrire dans un autre langage. Hacker news est plein d'histoires de personnes en réécrivant leurs applications serveurs dans un langage compilé pour gagner en performance.
Oui, une application bien écrite en boost::asio scalera horizontalement aussi bien qu'une application écrite avec netty ou twisted. Oui, ce sera surement plus long à écrire, plus difficile à debugguer qu'une application Java ou Python. Mais ce sera aussi plus rapide, et tu auras un bien meilleur ratio performance/watt. Il y a un facteur 10 en moyenne en temps entre du Python et du C++ sur des tâches calculatoires. Rien que le fait qu'il existe une bonne douzaine de projets visant à accélérer le code Python montre bien qu'il y a parfois un problème de performance avec ce langage (qui par ailleurs offre une excellente expressivité). Bien sur ce serait génial d'avoir un langage aussi expressif que Python offrant les performances du C++, mais ça n'existe pas encore aujourd'hui.
Attention, je ne suis pas en train de dire que C++ est la panacée et qu'il faut toujours privilégier la solution la plus performante. Clairement si c'est pour une application web qui évolue tous les mois, vaut sûrement mieux l'écrire en Python. Si c'est le service/api web avec lequel ta start up fait du blé, peut-être que Java est la meilleure solution. Si tu veux écrire un système de stockage distribué performant devant tourner sur cluster, peut-être qu'il faut utiliser du C++. Parfois la performance est importante et le ratio performance/watt ou performance/euros est important.
[1] TechEmpower - Web Framework Benchmarks