使用多个服务器在站点上管理会话状态?

时间:2013-01-28 18:31:13

标签: networking architecture n-tier-architecture

我目前处于设计阶段,我们有几个服务器构成我们的系统,我需要找出存储会话信息的最佳方法,以便每个服务器都可以访问它。会话信息基本上是会话ID和用户组名称列表的指南。

主要客户端应用程序是网络和移动应用程序。

我有以下配置:

主服务器,其中所有用户都登录,并且会话对象填充了与用户对应的用户组信息。登录高峰期最多可有10,000名用户。

包含归档内容的奴隶服务器,然后大多数用户将通过UI直接与从属服务器通信。从属服务器需要最初在主服务器上确定的会话信息。

一种选择是将每次登录的会话数据移动到从属服务器并将其缓存在从属服务器上,然后每个从属服务器可以独立工作,而不需要引用主服务器。

另一种选择是拥有包含会话信息的中央数据库,但由于我们的数据库位于每台服务器上(我们没有单独的机器作为数据库服务器),每个从属设备都将有一个远程连接字符串到主服务器数据库。毫无疑问,如果我必须从从属服务器远程查询数据库,这将减慢速度。

然后我遇到需要清理会话的情况,但总的来说,我不希望在峰值登录时有超过25 MB的数据。

我们最多可以有10个奴隶服务器。

什么是最佳解决方案?

1 个答案:

答案 0 :(得分:1)

对于IIS 7.0,这是一篇Technet文章,概述了两种方法(会话服务器或使用SQL服务器):

http://technet.microsoft.com/en-us/library/cc754032(v=ws.10).aspx

我怀疑需要运行10台运行10个单独数据库的Web服务器。当然,我对你正在编写的应用程序一无所知,并且可能有很好的理由。

以下是我看到它的方式(我承认你的应用知识有限)。

10,000个可能的并发用户点击1个身份验证服务器然后将它们重定向到10个服务器中的一个(或多个?)可能会导致瓶颈。如果多数人去其中一个服务器怎么办?如果大量的人都试图同时登录怎么办?

这是对不同架构的抨击:

                           [LoadBalancer]
    -------------------------------------------------------------------------
    [WebServer]   [WebServer]   [WebServer]  -------------> [SessionServer]
                           [LoadBalancer]    
    -------------------------------------------------------------------------
    [AppServer]   [AppServer]   [AppServer]   [AppServer] -------^

    -------------------------------------------------------------------------
    [DBServer]
    [DBServer](backup)

我写道,不知道这些机器是什么类型的;它们可能不适合作为数据库服务器。

嗯,现在还早,我只喝第二杯咖啡。这可能有用也可能没用,我希望是。