代码之家  ›  专栏  ›  技术社区  ›  sirmak

存储.NET会话数据的最佳方法[已关闭]

  •  1
  • sirmak  · 技术社区  · 15 年前

    我正在研究一种免费、高可用、高性能的解决方案,用于缓存或存储.NET会话数据(用于高流量网站)。我不想使用DB(DB是流量增加的瓶颈)。

    有一些键/值存储,但据我所知,它们不支持.NET对象。 还有一些分布式或复制的缓存解决方案支持高可用性。

    但是,哪种方法是存储会话数据的最佳方法(如果它在mono上运行,更好)?

    编辑: 为了实现高可用性,我必须将用户会话数据复制到多台机器上。如果需要实现最佳方法,我可以编写序列化程序。用户会话包含电子商务站点所需的标准对象。

    当做, 西尔马克

    3 回复  |  直到 15 年前
        1
  •  3
  •   Michael Mann    15 年前

    您可以使用作为Windows服务运行的会话状态服务器,但是为了使其在Web场方案中工作,您需要让其中一个Web服务器运行会话状态服务,而其他Web服务器将与该单个Web服务器协调。如果运行该服务的Web服务器出现故障,这当然是一个问题。

    另一种选择是使用memcachd,它是一个分布式内存会话状态服务器。这是免费的,并且已经有了此框架的.NET提供程序。它相当成熟,已经存在一段时间了。

    如果您有钱花,那么扩展服务器可能是一个选项。然而,有人告诉我,在真正的大型网站上,扩展技术需要不时地被回收利用。

    在微软的拐弯处,出现了与memcached类似的.NET速度。这还没有发布,也不是一项成熟的技术。

    您需要选择适合您的技术和财务要求的解决方案。

        2
  •  2
  •   Mitch Wheat    15 年前

    如果你是自由交谈,那么 MySQL 有能力 handling high volume traffic (显然在正确的硬件上)

        3
  •  0
  •   Noon Silk    15 年前

    首先,您需要确定您在会话中存储的内容。有一些事情根本无法连续化。但是,您可以为相关对象实现自己的序列化例程,并以您所组成的方式存储它们。例如,您可以在内部对binaryserialisation进行操作,然后将对象作为base64编码的字符串写入缓存工具(memcached或其他任何工具)并检索它。

    但是,在这里,您要实现什么样的可伸缩性呢?您是否按请求在服务器之间交换用户?如果是这样,您将需要一个中央缓存系统,或者至少是镜像缓存系统。

    如果您要将一个用户保持在同一台服务器上,但可能有许多用户,那么这并不重要,您可以在同一台机器上使用一个外部进程进行缓存。

    我想你需要提供更多的信息。我不熟悉在Mono上运行东西(所以我只推荐ASP.NET状态服务),但我猜第三方缓存过程(如memcached)可能很好。