Dan*_*ira 9 session cluster-analysis
会话变量通常保存在Web服务器RAM内存中.
在群集中,客户端发出的每个请求都可以由不同的群集节点处理.对?!
那么,在这种情况下......
编辑:经典ASP有一些解决方案吗?
扩展@ yogman的答案.
Memcached真是太棒了!它是一个高性能和分布式对象缓存.
即使我提到分布式它基本上就像在一个备用/空闲服务器上启动一个实例一样简单,你可以将其配置为ip,port和使用多少内存并完成.
memcached -d -u www -m 2048 -l 10.0.0.8 -p 11211
Run Code Online (Sandbox Code Playgroud)
(在守护程序模式下运行memcached,作为用户www,在IP 10.0.0.8上使用端口11211的2048 MB(2 GB)RAM.)
从那时起,您向memcached询问数据,如果数据尚未缓存,则将其从原始源中提取并将其存储在memcached中.我相信你熟悉缓存基础知识.
在集群环境中,您可以将memcached链接到集群,并在节点之间复制缓存.Memcached在Linux,Unix和Windows上运行,在任何有备用RAM的地方启动它并开始使用你的资源.
memcached的API 通常应该可用.我说应该是因为我只知道Perl,Java和PHP.但我确信,例如在Python中人们也有办法利用它.有一个memcached wiki,如果你需要指针,或者如果我太过分了,请在评论中告诉我.;)
有三种方法可以在ASP.NET中存储会话状态.第一个是进程中,变量存储在内存中.第二种是通过将以下内容放在web.config文件中来使用会话状态服务:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;user id=sa;password="
cookieless="false"
timeout="20" />
Run Code Online (Sandbox Code Playgroud)
正如您在stateConnectionString属性中看到的,会话状态服务可以位于不同的计算机上.
第三种选择是使用集中式SQL数据库.为此,您将以下内容放在web.config中:
<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString=
"data source=SERVERHAME;user id=sa;password="
cookieless="false"
timeout="20"
/>
Run Code Online (Sandbox Code Playgroud)
有关所有这些选项的更多详细信息,请参见此处:http://www.ondotnet.com/pub/a/dotnet/2003/03/24/sessionstate.html
在 ASP.NET 中,您可以将会话数据保存到 SQL Server 数据库中,该数据库对于集群中的所有 Web 服务器都是通用的。
配置完成后(在站点的 web.config 中),框架会为您处理所有持久性,并且您可以正常访问会话数据。
归档时间: |
|
查看次数: |
11575 次 |
最近记录: |