2015-08-20 6 views
0

Nous sommes actuellement en train d'organiser une conférence étudiante. Le problème est que nous offrons plusieurs événements différents en même temps au cours d'une semaine. La conférence se déroule toute la journée. Il fonctionne actuellement selon le principe du premier arrivé, premier servi, mais cela a conduit à des problèmes dramatiques dans le passé, à savoir que le serveur plante presque immédiatement, alors que plus de 1000 étudiants tentent d'obtenir les meilleurs événements aussi rapidement qu'ils le font. pouvez. Quelqu'un sait-il comment gérer au mieux ces événements afin que chaque utilisateur ait la meilleure chance de participer aux événements auxquels il souhaite participer, d'une part sans que le serveur ne plante, et d'autre part avec les personnes qui s'inscrivent à des événements ayant une capacité maximale, tout dans quelques minutes? Peut-être en quelque sorte tituber le processus d'enregistrement ou quelque chose de similaire?Meilleure façon de gérer plus de 1000 utilisateurs qui s'inscrivent à des événements de conférence à la fois

Je suis conscient que c'est une question très large, mais je ne suis pas sûr où chercher quand essayer de résoudre ce problème ...

Répondre

1

grandes questions ont des réponses tout aussi large. Il existe généralement deux façons de le gérer

  1. Ecrivez plus de code performant pour qu'un seul serveur puisse gérer la charge.
    • Optimisez le code de retour; données de cache; minimiser les requêtes DB; optimiser les requêtes de base de données; optimiser les appels de tiers; envisager de stocker des choses intermédiaires dans la mémoire; faire un usage judicieux des transactions en faisant la part entre la cohérence et la performance si possible; DB de partition.
  2. Echelle horizontale: déploie plusieurs serveurs. Placez un équilibreur de charge devant vos multiples serveurs frontaux. Redimensionner horizontalement DB en introduisant plusieurs esclaves de lecture.

Il n'y a pas de solution miracle. Tout commence par l'analyse d'abord - quelles parties de votre code prennent le plus de temps et la plupart des ressources, puis les attaquent systématiquement.

Certaines solutions rapides sont possibles; par exemple. les résultats de recherche peuvent être mis en cache. Le cache peut être périmé; il y aurait donc des situations où la page de recherche montre qu'il y a des places disponibles, alors qu'en réalité l'événement est complet. Vous gérez ces cas lors de l'enregistrement. Pour mettre en cache des pages Web, utilisez un proxy de mise en cache.