|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 13 ![]() |
Bonjour,
Je suis en train de développer une grosse application web qui contiendra (je l'espère) des millions d'utilisateurs. Cette application effectue beaucoup de requête sql par utilisateur donc je risque de vite me retrouver avec mon serveur qui a du mal. J'ai donc décider de prendre 2 serveurs MySQL et de répartir mes utilisateurs sur l'un ou sur l'autre. Je pourrais faire du clustering mais le cout serveur serait trop élevé. Je vais donc, lors de l'inscription d'un utilisateur faire cette inscription sur le serveur 1 ou sur le serveur 2. Quelqu'un voit-il comment faire cela ? Comment pourrais-je géré la partie communautaire ? Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Avant de commencer, pose toi la question du sizing: nombre d'utilisateur total, nombres d'utilisateurs connectés en même temps, nombre de requêtes par secondes etc. Si le montant devient trop important, il se peut qu'un RDBMS (MySQL pour ne citer que celui là) ne convienne pas et il sera peut être intéressant de se tourner vers les moteurs de bases de données no-sql comme : - Cassandra - MongoDB Qui sont beaucoup plus efficaces en stress que MySQL. Puisque tu parlais d'installer un cluster, sache que Cassandra à été taillé pour. Si tu souhaite démarrer avec du MySQL (ce qui peut se comprendre, après tout Facebook à démarré sur une stack LAMP lui aussi) il existe des solutions pour optimiser la répartition du volume de données et optimiser les temps d'accès: - L'usage du NDBcluster (que je te déconseille fortement) - Les tables fédérées, chez nous on s'en sert pour la réplication - Le partitionnement (qui peut être fait également dans l'optique de dispatcher les données sur plusieurs nodes d'un cluster). Pour avoir manipulé les 3, le partitionnement reste la solution la plus simple et la plus efficace. Mais attention: - Le partionnement ne peut être fait que sur des tables InnoDB, MyISAM ou NDBCluster - Avec des tales NDBcluster, il ne peut y avor que n partitions où n est le nombre de nodes dans le cluster (d'autres limitation sont à prendre en compte dans ce cas) - On ne peut partitionner que sur 2 niveaux - La performance du partitionnement peut diviser par 5x les temps d'accès s'il est effectué correctement mais peut les multiplier par 2x s'il n'est pas correctement fait En tout cas, ce n'est en aucune façon le rôle de PHP d'effectuer le load balancing, contrairement à ce que ton post laisse suggérer, c'est le cluster qui doit s'en charger. Je ne te conseillerai jamais trop les outils de MySQL pour atteindre ce but: - MySQL Workbench Je te recommande également Lithium, un framework PHP destiné au sites à forte charge. Et je te recommande l'usage de Redis ou Memcached pour tout ce qui est cache mémoire afin de ne pas surcharger le SGBD (les deux sont supportés par Lithium). Il est également possible de mettre un lion dans ton moteur PHP. Les projets suivants peuvent t'intéresser si le problème de performance devient trop important: - Zend Server et son moteur d'opcodes optmimisé - HipHop, créé par Facebook, permet de traduire du PHP en C++ - Quercus, permet de faire tourner PHP dans Java sur un serveur d'application tel que GlassFish - Roadsend, compilateur PHP - Phalanger, compilateur PHP pour .Net Bon courage et n'oublie pas de nous faire part des tes retours d'expérience sur ces technologies. N.B. On se serait pas croisés à l'IUT de Nice entre 2006 et 2009 ? Je crois me rappeller d'un certain Marc De Almeida, un parent à toi ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
Copyright © 2000-2012 - www.developpez.com