1

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

主要的客户端应用程序是 Web 和移动应用程序。

我有以下配置:

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

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

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

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

然后,我遇到了需要清理会话的情况,但总的来说,我预计登录高峰期的数据不会超过 25 MB。

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

什么是最好的解决方案?

4

1 回答 1

1

对于 IIS 7.0,这里有一篇技术网文章,其中概述了两种方法(会话服务器或使用 SQL 服务器):

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

我质疑是否需要运行 10 个 Web 服务器并在其上运行 10 个单独的数据库。当然,我对您正在编写的应用程序一无所知,并且很可能有充分的理由。

这是我的看法(我承认对您的应用程序了解有限)。

10,000 个可能的并发用户访问 1 个身份验证服务器,然后将他们重定向到 10 个服务器中的一个(或更多?)可能会导致瓶颈。如果大多数人使用其中一台服务器怎么办?如果很多人都尝试同时登录怎么办?

这是对不同架构的尝试:

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

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

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

嗯,现在时间还早,我只喝第二杯咖啡。这可能会或可能不会有帮助,我希望它是。

于 2013-01-29T12:55:18.477 回答