【问题标题】:Scaling a web application and making it stateless扩展 Web 应用程序并使其无状态
【发布时间】:2012-04-04 03:00:01
【问题描述】:

我正在努力弄清楚如何扩展允许用户登录的任何类型的 Web 应用程序,并且依赖于该用户登录来执行任何操作。

例如,假设我有一个 Web 应用程序,它允许用户登录、编辑用户地址簿、向其他用户发送消息以及接收来自用户的消息。

我收到的一些建议是使用动词将我的应用程序划分为服务。所以我会有一个地址簿编辑服务、一个消息发送服务、一个消息接收服务和一个身份验证服务。所有这些都可以单独进行水平扩展,并且不会共享数据。这将是理想的,只有他们必须共享数据 - 当前登录的用户。我无法从概念上了解这将如何工作?我是否应该只在服务之间发送用户 ID,并且隐含的是登录的用户?如果我想使用有关用户当前正在做什么的信息来维护会话状态怎么办?

【问题讨论】:

    标签: web-applications scaling


    【解决方案1】:

    在某些时候,所有 Web 服务器都必须在某个地方汇聚。那个地方通常是数据库集群。在初始身份验证时,您可以生成一个随机字符串并将其存储在数据库中用户当前的身份验证 cookie 列表中。每次将 cookie 传递到其中一台服务器时,服务器都可以检查数据库集群以查看 cookie 与哪个用户(如果有)相关联。

    我要补充一点,您不需要数据库集群。您可以将数据库分布在各个站点上。但是,有些操作需要同步。在初始登录时生成 cookie(这种情况不会经常发生)就是其中之一。否则,您将混合使用可以识别和不识别 cookie 的服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多