【发布时间】:2010-09-22 09:38:54
【问题描述】:
我在负载平衡的 Web 服务器环境中使用 ASP.NET 和 WCF 服务,在服务层使用 Memcached。
我还想用 Memcached 替换使用 ASP.NET 状态服务器(用于会话状态)。 现在恐怕这不是一件好事,因为据我了解, Memcached 是缓存服务器而不是状态服务器,是这样吗?
如果我理解正确,Memcached 不会将数据分发到 Memcached 场中的其他节点。 相反,使用一种特殊的散列算法来确定场中的哪个节点包含所请求密钥的数据, 而 ASP.NET 状态服务器在添加数据后会尽快分发数据,以防止单点故障。
换句话说,Memcached 应该只用于性能原因,存储在其中的数据应该始终是可重新创建的, 如果该项目已被移除以腾出空间来容纳新对象,或者如果实际存储数据的单台机器出现故障。
所以我不能只依赖 Memcached 来存储会话状态数据吗? 如果我不能,那么我不明白 Memcached 是如何经常被比较并被视为 使用 ScaleOut StateServer 和 ASP.NET State Server 的替代方法, 因为这些是真正的状态服务器,这是另一回事,对吧?
我现在有点不确定在 Web 服务器场中实现高性能分布式会话状态的最佳方法是什么。
谢谢
【问题讨论】:
-
我不相信您归因于 ASP.NET 状态服务器的故障转移属性存在。至少据我所知,没有现成的方法可以做到这一点。这是单点故障。