Лучший способ управлять более чем 1000 пользователей, одновременно регистрирующихся на конференции

Сейчас мы готовим студенческую конференцию. Проблема в том, что мы предлагаем несколько разных мероприятий одновременно в течение недели. Конференция работает целый день.

В настоящее время он работает по принципу «первым пришел – первым обслужен», однако в прошлом это приводило к серьезным проблемам, а именно к почти мгновенному сбою сервера, поскольку более 1000 студентов старались как можно быстрее получить лучшие события.

Кто-нибудь знает, как лучше всего справиться с этим, чтобы у каждого пользователя были наилучшие шансы зарегистрироваться на мероприятия, которые они хотят посетить, во-первых, без сбоя сервера, а во-вторых, с регистрацией людей на мероприятия с максимальной вместимостью, все в течение нескольких минут? Возможно, как-то шатается процесс регистрации или что-то подобное?

Я знаю, что это очень широкий вопрос, однако я не уверен, где искать, пытаясь решить эту проблему...


person GeeJay    schedule 20.08.2015    source источник


Ответы (1)


Широкие вопросы имеют столь же широкие ответы. В целом есть два способа справиться с этим

  1. Write more performant code so that a single server can handle the load.
    • Optimize backend code; cache data; minimize DB queries; optimize DB queries; optimize third party calls; consider storing intermediate things in memory; make judicious use of transactions trading off consistency with performance if possible; partition DB.
  2. Горизонтальное масштабирование — развертывание нескольких серверов. Установите балансировщик нагрузки перед несколькими серверами переднего плана. Горизонтальное масштабирование БД путем введения нескольких ведомых устройств чтения.

Быстрых решений нет. Все начинается сначала с анализа — какие части вашего кода занимают больше всего времени и ресурсов, а затем систематически атакуют их.

Возможны некоторые быстрые исправления; например результаты поиска могут кэшироваться. Кэш может быть устаревшим; так что могут быть ситуации, когда страница поиска показывает, что есть свободные места, когда на самом деле мероприятие заполнено. Вы обрабатываете такие случаи во время регистрации. Для кеширования веб-страниц используйте кеширующий прокси.

person Amit    schedule 21.08.2015