Параллельные входы в веб-ферму - PullRequest
1 голос
/ 29 августа 2008

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

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

Поскольку это веб-ферма, как лучше всего решить эту проблему?

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

Ответы [ 4 ]

7 голосов
/ 29 августа 2008

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

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

6 голосов
/ 29 августа 2008

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

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

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

3 голосов
/ 29 августа 2008

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

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

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

  • Если приложение / ящик не работает, и пользователь не может выйти из системы, состояние пользователя в базе данных останется «зарегистрированным».
1 голос
/ 29 августа 2008

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

...