Масштабирование веб-приложения и его сохранение без сохранения состояния - PullRequest
4 голосов
/ 19 марта 2012

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

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

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

1 Ответ

1 голос
/ 19 марта 2012

В какой-то момент все веб-серверы должны где-то сходиться.Обычно это место кластера базы данных.После первоначальной аутентификации вы можете сгенерировать случайную строку и сохранить ее в текущем списке файлов cookie аутентификации пользователя в базе данных.Каждый раз, когда cookie передается на один из серверов, сервер может проверять кластер базы данных, чтобы определить, с каким пользователем (если есть), с которым связан cookie.

Я добавлю, что вам не нужнокластер базы данных.Вы можете распределить базу данных по различным сайтам.Однако некоторые операции должны быть синхронными.Создание файла cookie при первоначальном входе в систему (что случается не так часто) является одним из них.В противном случае у вас будет смесь серверов, которые распознают куки и не распознают их.

...