我正在研究一种免费的,高可用的高性能解决方案,用于缓存或存储.net会话数据(适用于高流量网站)。我不想使用db(db是流量增加的瓶颈)。
有一些键/值存储,但据我所知它们不支持.net对象。 并且有一些分布式或复制的缓存解决方案支持高可用性。
但是,这是存储会话数据的最佳方式(如果它在单声道上运行会更好)?
编辑:为了实现高可用性,我必须将用户会话数据复制到多台计算机上。如果需要实现最佳方法,我可以编写一个序列化器。用户会话包含电子商务站点所需的标准对象。
此致 Sirmak
答案 0 :(得分:3)
您可以使用作为Windows服务运行的会话状态服务器,但为了在Web场方案中运行,您需要让其中一个Web服务器运行会话状态服务和其他Web服务器将与该单个Web服务器协调。如果您的Web服务器停止正在运行该服务,这当然是一个问题。
另一个选择是使用memcachd,它是一个分布式内存会话状态服务器。这是免费的,并且已经为此框架提供了.NET提供程序。它相当成熟,已经存在了一段时间。
如果你有钱花钱,那么Scale Out服务器可能是一个选择。然而,有人告诉我,在真正大规模的网站上,扩展技术需要不时回收。
来自微软的弯道是Velocity,这是与memcached等效的.NET。这尚未发布,并不是一项成熟的技术。
您需要选择符合您技术和财务要求的解决方案。
答案 1 :(得分:2)
如果您正在免费通话,那么MySQL能够handling high volume traffic(显然在合适的硬件上)
答案 2 :(得分:0)
首先,您需要确定您在会话中存储的内容。有些东西根本无法序列化。但是,您可以为相关对象实现自己的序列化例程,并以您组成的方式存储它们。例如,您可以在内部使用BinarySerialisation,然后将对象作为base64编码的字符串写入缓存工具(memcached或其他)并检索它。
但是,你还想要什么样的可扩展性?您是否按照请求在服务器之间交换用户?如果是这样,您至少需要一个中央或至少是镜像的缓存系统。
如果您要将用户保留在同一台服务器上,但可能有很多用户,那么这并不重要,您可以在同一台计算机上使用外部进程进行缓存。
我认为您需要提供更多信息。我不熟悉在mono上运行的东西,(所以我只推荐使用asp.net状态服务)但我的猜测是第三方缓存过程,比如memcached,可能会很好。