Servicestack在多服务器环境中的会话可以使用什么样的可扩展性?

时间:2013-03-13 22:10:18

标签: scalability servicestack

当用户通过身份验证时,会话使用定义的ICacheclient进行存储,ICacheclient可以是memory,memcached或redis。 如果我使用两个Web服务器,我想会话只在完成身份验证的服务器上填充,我是对的吗?

我是否必须在此方案中使用粘性会话(内存缓存客户端)?

1 个答案:

答案 0 :(得分:2)

我们有一对服务器提供我们的网络应用程序,可以根据需要进行扩展。我们使用REDIS通过ICacheclient接口维护客户端身份验证状态。为了在构建机器上轻松进行测试,我们根据是否连接调试器在redis和memcached之间切换。我们的Apphost.cs有这个:

if (Debugger.IsAttached)
{
    container.Register<ICacheClient>(new MemoryCacheClient());        
}
else
{
    container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(AppConfig.REDISUrl + ":" + AppConfig.REDISPort));
    container.Register<ICacheClient>(c => (ICacheClient)c.Resolve<IRedisClientsManager>().GetCacheClient());
}

内置的身份验证方法适用于ICacheClient设置的任何内容,如documentation

中所述