The 2010-04-07 at 12:01 by Loïc d'Anterroches filed under News.
Cheméo est un moteur de recherches pour permettre aux ingénieurs chimistes/procédés de trouver des composants ayant certaines propriétés. Ce n’est pas pour l’utilisateur lambda qui tweet la couleur de ses chaussettes mais c’est intéressant de connaître le moteur derrière pour quelqu’un faisant une application web en PHP. J’essayerai de faire une présentation des éléments du système dans les jours à venir.
Voici déjà une petite présentation de la structure de la bête :
Finalement, PHP est juste une fine couche au dessus de beaucoup de scripts qui travaillent par derrière. Son seul rôle est d’aller vite, très vite.
Si vous aimez les explosifs, voici la description de la TNT. Pour le moment cela ne stock qu’environ 100.000 composants, mais dans les mois à venir, le système devrait finir par héberger environ 25 millions de composants. La montée en charge se fera doucement pour continuer de fournir des temps de recherche en dessous de 500ms quelque soit la demande. Cela impliquera de passer le système sur un cluster de serveurs (du sharding bête et méchant), probablement avec un mélange de beaucoup de RAM et des disques SSD. Le seul point difficile à faire grandir dans ce système est la base de données.
Je reviens rapidement sur la lourdeur des frameworks PHP "à nu", c’est à dire juste pour afficher "Hello World". Beaucoup ont pour réponse quand le framework est lourd de répondre, "de toute façon, on peut toujours faire du load balancing pour supporter la montée en charge". C’est vrai et je suis tout à fait d’accord mais cela ne réduit pas le temps pour afficher 1 page et votre visiteur se moque que vous sortiez 1 ou 10.000 pages par secondes via votre cluster, il veut juste que sa page à lui s’affiche vite.
Comments from readers
petitchevalroux said:
Super intéressant comme projet, ça à l'air sympa pluf je connaissais pas.
J'attend la suite ;)
amnesix said:
Longue vie à Cheméo et son jeune papa !
Joris said:
Je suis impressionné ! Bravo et bonne continuation !
loïc m. said:
enfin quelques nouvelles.
et quelles nouvelles !
bonne chance pour ce nouveau projet.
Mandar said:
Joli, bravo ! :)
Remarque innocente : a priori si tu as besoin de monter en charge uniquement en lecture, tu n'as pas besoin de sharding, des esclaves suffiront si tu arrives à avoir assez de stockage sur tes machines pour l'ensemble des données.
Loïc said:
Mandar, bonne remarque, mais dans mon cas particulier, je vais avoir besoin du sharding pour que le jeu de données reste toujours en RAM, ma montée en charge n'est pas en lecture mais en taille du jeu de données.
Un site comme Cheméo ne va pas faire plus de 2 millions de pages vues par mois dans le meilleur des cas, donc en gros une requête par seconde avec peut-être des pics, mais même en poussant du fait d'un crawler stupide, cela ne va pas dépasser les 15/20 par seconde. Le besoin d'esclaves (cela sonne bizarre d'écrire cela) n'est pas encore là du tout !
François said:
Vraiment très très intéressant.
J'espère que les prochains articles détaillant le fonctionnement de tout ce petit monde arriveront vite ;)
Bravo en tout cas et bonne continuation !
Mandar said:
D'accord ! Tiens-nous au courant, c'est un projet très intéressant.