Я работаю над веб-продуктом, который состоит из множества модульных веб-приложений. Для конечного пользователя оно представляется одним приложением, хотя различные компоненты разбиты на собственные приложения.
Отчасти это объясняется тем, что его можно легко масштабировать по горизонтали между несколькими серверами приложений.
Чтобы упростить горизонтальное масштабирование уровня данных, мы планируем использовать слой веб-службы перед базой данных. Этот слой можно масштабировать до N машин, и каждый его экземпляр будет обрабатывать кэширование индивидуально.
Идея состоит в том, что приложение будет вызывать балансировщик нагрузки уровня обслуживания, который будет назначать вызов экземпляру службы, затем использовать его кэш для возврата данных или подключаться к базе данных и запрашивать данные. , Похоже, что это было бы самым простым перспективным решением для масштабирования без необходимости значительного изменения кода приложения.
[N Amount of Databases]
|
\/
[Service Tier X N amount of Machines]
|
\/
[Application Tier X n amount of Machines]
Однако возникает несколько вопросов, я хотел бы сохранить сеанс пользователя на уровне обслуживания, чтобы каждое приложение просто аутентифицировалось с помощью токена, однако я не уверен, как я буду поддерживать данные сеанса на всех машинах обслуживания. без единой точки отказа.
Есть идеи, как это осуществить? Есть еще идеи по архитектуре? У кого-нибудь еще был проект создания сайта, который потенциально мог бы обрабатывать миллионы посещений в день?
РЕДАКТИРОВАТЬ: Даже не идея? (