Задать вопрос
Lomoson
@Lomoson

Авторизация при горизонтальном масштабировании. Как адекватно реализовать?

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

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

______________

Если в основной базе будет храниться общая таблица с пользователями и в каждой компании будет своя база с такой же таблицей пользователей и это адекватный вариант, то как работать дальше знаю
  • Вопрос задан
  • 547 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
He11ion
@He11ion
PHP-monkey
Это не горизонтальное масштабирование, если вы соединяетесь со всеми базами. Самый простой вариант - Вы должны по данным пользователя (id, логину, ip ...) определить нужную Вам БД и соединяться только с ней. Для этого используется(пишется) балансировщик соединений.
Ответ написан
voidnugget
@voidnugget
Программист-прагматик
Можно почитать/посмотреть записи с различных конференций, посмотреть как шардят большие конторы.
1. Аутентификация != Авторизация
2. Нужно понимать что при горизонтальном масштабировании сервер не должен хранить состояний - обычно люди хранят данные сессии в просоленной куке, а не в базе.
3. Распределять нагрузку нужно в зависимости от текущей, соответственно должен производится мониторинг, и запросы должны отправляться на наименее нагруженный сервер
4. В куке сессии должен записываться IP cервера который обрабатывает запросы от текущего пользователя, а DNS в свою очередь должен отдавать адрес сервера который работает с данной сессией. Таким образом с одним пользователем может работать только один сервер, и между ними не нужно гонять никаких редиректов, но на первое время можно просто редиректить.
5. В случае с push-нотификациями, и кэшированием там вообще всё очень сложно и нужно крутить CQRS-ES, иногда нужно решать задачу консенсуса Raft'ом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы