Scale Out Application (Split User Data) - Как установить единую точку входа? - PullRequest
0 голосов
/ 01 июня 2009

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

Сценарий:

  1. Экземпляры приложений с отдельными, автономными частями всех пользовательских данных распределены по нескольким географически рассредоточенным серверам (например, пользователи 1 - 1000 на сервере 1 в Гонолулу, пользователи 1 001 - 2000 на другом в Токио и т. Д.).
  2. Однопользовательские данные доступны только один раз на одном сервере во всей системе и недоступны для других серверов.
  3. Пользователи не заботятся о данных других пользователей, поэтому им не требуется внутренняя связь между серверами.
  4. Однако приложению требуется центральная точка входа, давайте назовем ее www.mysite.com / login

Моя первоначальная идея состояла в том, чтобы иметь «основную» базу данных, которая хранит всех пользователей и их расположение на сервере, а затем перенаправляет на соответствующую базу данных при входе в систему.

Есть ли более простой / лучший способ сделать это?

1 Ответ

1 голос
/ 01 июня 2009

В зависимости от того, сколько серверов у вас есть, альтернатива состоит в том, чтобы «центральная точка входа в систему» ​​отправляла («широковещательно») каждый запрос входа в систему на все серверы; большинство серверов быстро ответят «пользователь неизвестен», один из них идентифицирует себя как тот, на котором находится пользователь, и т. д. и т. д. Является ли это предпочтительным для управления «репликацией» информации в «главную базу данных», обеспечения согласованности и т. д. и т. д. Трудно сказать, учитывая скудную информацию, но, по крайней мере, это может быть альтернативная архитектура, заслуживающая рассмотрения.

...