存储.net会话数据的最佳方式
我正在研究用于缓存或存储.net会话数据(针对高流量网站)的免费,高可用性,高性能解决方案。我不想使用数据库(数据库是流量增加的瓶颈)。存储.net会话数据的最佳方式
有一些关键/值存储,但据我所知他们不支持.net对象。 还有一些支持高可用性的分布式或复制缓存解决方案。
但是,哪个是存储会话数据的最佳方式(如果它运行在单声道上会更好)?
编辑:为了实现高可用性,我必须将用户会话数据复制到多台机器上。如果需要实现最佳方法,我可以编写一个序列化程序。用户会话包含电子商务网站所需的标准对象。
问候, Sirmak
那么你可以使用它运行作为Windows服务会话状态服务器,但为了使这项工作在一个Web场景场景,您需要让其中一个Web服务器运行会话状态服务,其他Web服务器将与该单个Web服务器进行协调。这当然是一个问题,如果您的Web服务器停止运行服务。
另一种选择是使用分布式内存会话状态服务器中的memcachd。这是免费的,这个框架已经有了.NET的提供者。它已经相当成熟,并且已经存在了一段时间。
如果您有资金需要花费,那么Scale Out服务器可能是一个选项。不过,有人告诉我,在真正大规模的网站上,横向扩展技术需要不时回收。
从微软的角度来看,Velocity是.NET对于memcached的平等。这还没有发布,并不是一项成熟的技术。
您将需要选择适合您的技术和财务要求的解决方案。
哦,首先你需要确定你是存储在会话的内容。有些东西根本无法序列化。但是,您可以为相关对象实现自己的序列化例程,并以您构成的方式存储它们。例如,您可以在内部对BinarySerialisation,然后将对象作为base64编码字符串写入缓存工具(memcached或其他)并检索它。
但是,在这里你想要什么样的可扩展性?您是否在每个请求的服务器之间交换用户?如果是这样,至少需要一个中央或至少是镜像缓存系统。
如果你将一个用户保留在同一台服务器上,但可能有很多,那么这并不重要,你可以在同一台机器上使用一个外部进程来缓存。
我想你需要提供更多信息。我不熟悉在单声道上运行的东西,(所以我只是推荐asp.net状态服务),但我的猜测是第三方缓存过程,如memcached,可能是好的。
@merin认为:对于缓存,您可以使用[memcacheD](http://www.danga。COM /分布式缓存/)。 – hakre 2012-08-28 10:13:43