Одновременные входы в веб-ферму
-
09-06-2019 - |
Вопрос
Я действительно спрашиваю об этом по доверенности, другая команда на работе получила запрос на изменение от нашего клиента.
Проблема в том, что наш клиент не хочет, чтобы его сотрудники входили в систему под именем нескольких пользователей одновременно.Что они блокируются и делятся логинами.
Поскольку это происходит на веб-ферме, каков был бы наилучший способ решения этой проблемы?
Не вызовет ли кэширование базы данных проблем с производительностью?
Решение
Вы можете использовать систему распределенного кэша, например memcached
Это решило бы эту проблему довольно хорошо (это НАМНОГО быстрее, чем база данных), а также отлично подходит для кеширования практически всего остального тоже
Другие советы
Это просто стоимость ведения бизнеса.
Да, кэширование в базе данных медленнее, чем кэширование на вашем веб-сервере. Но вы должны хранить эту информацию о состоянии в централизованном месте, иначе один веб-сервер не будет знать, какие пользователи вошли в другой.
Предположение: вы пытаетесь предотвратить одновременный вход нескольких пользователей одним пользователем.
Операция с базой данных при входе в систему и выходе из системы не вызовет проблем с производительностью.
- Если вы используете кэширующий прокси-сервер, это вызовет проблему:
- пользователь выйдет из системы, но не сможет снова войти в систему до тех пор, пока выход из системы не достигнет кэша
Вашей самой большой потенциальной проблемой может быть:
- если приложение / box выйдет из строя без возможности выхода пользователя из системы, состояние пользователя в базе данных останется "вошел в систему".
Это зависит от того, как выполняется аутентификация. Если вы сохраняете дату последнего успешного входа в систему (независимо от серверной части), то, возможно, вы можете изменить схему, чтобы сохранить флаг " logged_in " и это не повлечет за собой дополнительных затрат производительности. (хорошо, это не чисто)