À titre indicatif, connaissez vous libevent ? http://monkey.org/~provos/libevent/
Cette lib fournis une API unifiée (et portable sous Linux, *BSD, Windows, Mac OS X et Solaris) pour la gestion des évènements, et sait tirer parti de façon transparente de la meilleur API système présente (par ex. epoll sous Linux, kqueue sous *BSD, etc.). C'est très robuste aussi (utilisé par memcached et par les serveurs osfp, ifstated et le proxy ftp d'OpenBSD).
Voilà, ça permet de faire des choses dans l'esprit de HAProxy (je veut dire : pas forcément d'aussi bon logiciels, mais des logiciels utilisant les bonnes API de gestion d'event pour encaisser de grosses charges) sans être un caïd de la prog système :)
Le site de Niels Provos (l'auteur de cette lib) indique aussi un papier très pertinent sur le sujet dont on parle : http://www.kegel.com/c10k.html , qui compare les diverses approches (choix des api d'event et/ou pour les threads, utilisation de sendfile()/zerocopy, ...) pour programmer des serveurs performants et qui tiennent la charge.
# libevent
Posté par herodiade . En réponse à la dépêche HAProxy, le répartiteur de charge fiable et performant. Évalué à 3.
Cette lib fournis une API unifiée (et portable sous Linux, *BSD, Windows, Mac OS X et Solaris) pour la gestion des évènements, et sait tirer parti de façon transparente de la meilleur API système présente (par ex. epoll sous Linux, kqueue sous *BSD, etc.). C'est très robuste aussi (utilisé par memcached et par les serveurs osfp, ifstated et le proxy ftp d'OpenBSD).
Voilà, ça permet de faire des choses dans l'esprit de HAProxy (je veut dire : pas forcément d'aussi bon logiciels, mais des logiciels utilisant les bonnes API de gestion d'event pour encaisser de grosses charges) sans être un caïd de la prog système :)
Le site de Niels Provos (l'auteur de cette lib) indique aussi un papier très pertinent sur le sujet dont on parle : http://www.kegel.com/c10k.html , qui compare les diverses approches (choix des api d'event et/ou pour les threads, utilisation de sendfile()/zerocopy, ...) pour programmer des serveurs performants et qui tiennent la charge.