横向扩展应用程序(拆分用户数据) - 如何建立单点登录?

时间:2009-06-01 01:33:54

标签: architecture scalability

我必须为应用程序做出架构决策,并希望了解实现以下内容的最佳方法,希望无需保持信息重复或在多个位置。

方案:

  1. 整个用户数据的分离的自主部分的应用程序实例分布在多个地理位置分散的服务器上(例如,檀香山的服务器1上的用户1 - 1,000,东京的另一个用户1,001 - 2,000等)。
  2. 单个用户数据仅在整个系统中的一个服务器上一次,并且不可用于其他服务器。
  3. 用户不关心其他用户的数据,因此服务器之间没有内在的通信需求。
  4. 但是,应用程序需要一个集中登录点,我们可以将其称为 www.mysite.com/login
  5. 我最初的想法是拥有一个“主”数据库,用于保存所有用户及其服务器位置,然后在登录时重定向到相应的用户。

    有更简单/更好的方法吗?

1 个答案:

答案 0 :(得分:1)

根据您拥有的服务器数量,另一种方法是让“中心登录点”向每个服务器发送(“广播”)每个登录请求;大多数服务器会快速回答“用户未知”,一个会将自己标识为用户所在的等等。这是否优于管理“复制”信息到“主数据库”,确保一致性等等,鉴于信息稀少,很难说,但至少它可能是一个值得考虑的替代架构。