Вопрос

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

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

Поскольку это происходит на веб-ферме, каков был бы наилучший способ решения этой проблемы?

Не вызовет ли кэширование базы данных проблем с производительностью?

Это было полезно?

Решение

Вы можете использовать систему распределенного кэша, например memcached

Это решило бы эту проблему довольно хорошо (это НАМНОГО быстрее, чем база данных), а также отлично подходит для кеширования практически всего остального тоже

Другие советы

Это просто стоимость ведения бизнеса.

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

Предположение: вы пытаетесь предотвратить одновременный вход нескольких пользователей одним пользователем.

Операция с базой данных при входе в систему и выходе из системы не вызовет проблем с производительностью.

  • Если вы используете кэширующий прокси-сервер, это вызовет проблему:
  • пользователь выйдет из системы, но не сможет снова войти в систему до тех пор, пока выход из системы не достигнет кэша

Вашей самой большой потенциальной проблемой может быть:

  • если приложение / box выйдет из строя без возможности выхода пользователя из системы, состояние пользователя в базе данных останется "вошел в систему".

Это зависит от того, как выполняется аутентификация. Если вы сохраняете дату последнего успешного входа в систему (независимо от серверной части), то, возможно, вы можете изменить схему, чтобы сохранить флаг " logged_in " и это не повлечет за собой дополнительных затрат производительности. (хорошо, это не чисто)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top