bar*_*tta 5 .net asp.net memcached
我在负载平衡的Web服务器环境中使用ASP.NET和WCF服务,在服务层中使用Memcached.
我还想用Memcached替换ASP.NET State Server(用于Session State).现在我担心这不是一件好事,因为根据我的理解,Memcached是缓存服务器而不是状态服务器,是真的吗?
如果我理解正确,Memcached不会将数据分发到Memcached服务器场中的其他节点.相反,使用特殊的散列算法来确定服务器场中的哪个节点包含所请求密钥的数据,而ASP.NET状态服务器在添加数据时尽快分发数据,以防止单点故障.
换句话说,Memcached应仅用于性能原因,存储在其中的数据应始终可重新创建,以防项目被删除以为新对象腾出空间,或者如果单个机器实际存储数据下.
那么我不能仅仅依赖Memcached来存储会话状态数据吗?如果我不能,那么我不明白Memcached如何经常与使用ScaleOut StateServer和ASP.NET State Server进行比较和被视为替代,因为这些实际上是状态服务器,这是另一回事,对吧?
我现在有点不确定Web服务器场中高性能分布式会话状态的最佳方法是什么.
谢谢
Memcached 目前不支持数据镜像,它仅提供将条目拆分到多个服务器上的功能,以防止一台服务器被淹没。这可以通过使用服务器地址对密钥进行散列,或者使用一致的散列算法(libketama)来实现。
但一般来说,Memcached 不应被视为持久存储层,并且在几乎所有情况下,缓存中的数据应与数据库中的数据相同。如果您要更改用户的会话数据并希望缓存它,请在 Memcached 中更新它,然后立即在数据库中更新它。如果您想非常小心,您可以实现一个简单的日志系统,以确保这些数据在系统发生故障时保持一致。
Memcached 确实被用于缓存会话,其创建者在 Jinux Journal 文章中也说了同样的话。它实际上只是为了优化读取操作,最终,您关心的任何数据都应该存储在数据库中。