分布式缓存/会话应该转向哪里?

3

无论你选择哪种解决方案,都要确保你理解当项目数量变得“太大”时会发生什么(即当内存不足时)。新的或旧的项目会被删除吗?这是否会影响存储数据的应用程序(例如会话数据)? - Jonathan Rupp
无论使用分布式缓存解决方案,这不总是一个问题吗? - WebDude
4个回答

2
从您的选择中,我只尝试过使用memcached,即使是它也不是C#/.NET库。然而,memcached技术已经被证明相当成熟,只需看看使用它的网站
“...该系统被一些非常大的、知名的网站使用,包括YouTube、LiveJournal、Slashdot、Wikipedia、SourceForge、ShowClix、GameFAQs、Facebook、Digg、Twitter、Fotolog、BoardGameGeek、NYTimes.com、deviantART、Jamendo、Kayak、VxV、ThePirateBay和Netlog。”
我真的看不出为什么要考虑其他解决方案。
祝好运, Brian G。

总有一个理由去寻找其他的选择 - 流行度很难成为适用性的最佳指标。.NET对于memcached的库使用起来很困难(我好像把我的资源弄丢了,但我在几个博客中读到过这个问题)。 - Erik Forbes
哇,我没想到那么受欢迎。我应该研究一下。我目前正在研究和开发过程中选择一个分布式内存工具。 - Elijah Manor
除非你对memcached进行集群处理(默认不可用,但可以实现),否则它将成为一个故障点。如果只是用于缓存,那么Memcache非常棒,即可以容忍信息丢失。但如果用于会话,则需要考虑会话丢失的情况,这对用户有什么影响? - Simon Thompson

1

评估解决方案时,人们通常会忘记一件事情,那就是专业支持。

如果你选择使用memcached,那么你将得不到任何支持,因为你使用的是完全开源且没有任何供应商支持的软件。没错,核心平台经过岁月的考验而非常稳定,但是C#客户端库可能远没有那么稳定。而且,你可能会在论坛等地方得到一些帮助,但不能保证回复速度快或者是否能得到答复。

我不知道NCache或ScaleOut Cache的支持情况如何,但在选择它们之前,了解一下这方面的信息是很值得的。在过去几年中,我和许多公司打过交道,他们的支持通常是外包给并不工作于该公司的人员处理(根本无法接触到真正的公司内部人员),这意味着无法获得及时的高质量支持。另一方面,我也曾与那些公司打过交道,他们会将严重问题升级至正确的人员处,快速解决重要问题,并向你提供个人补丁。

其中一个这样做的公司是微软,这也是我们将他们的软件作为我们平台的原因之一。如果你遇到生产问题,那么你可以依赖他们的支持。因此,我倾向于基于这个原因选择Velocity。

可能最重要的是,无论你选择哪种缓存,都要将其抽象化到自己的接口后面(例如ICache),这将允许您评估其中的多个而不会拖延整个开发过程。这意味着即使您最初的决定对您不起作用,您也可以在不破坏应用程序的情况下进行切换。
(注意:我在这里假设所有缓存都具有足够的功能来支持您需要的内容,并且所有缓存的性能足够且大致相似。这可能不是一个有效的假设,在这种情况下,您需要在问题中提供更多详细信息以说明为什么它不是)。

0
你也可以将Oracle Coherence添加到你的列表中。它同时拥有.NET和Java API。

0

来自微软的信息: 应用程序工厂 商用选择: NCache 开源选择: RIAK

我们试过几种方法,最后我们使用了适用于asp.net/mvc的SQL会话提供程序。是的,连接到数据库会有一些开销,但是我们的数据库服务器非常快,而且Web Farm有很大的容量,因此不是问题。

我们对RIAK非常感兴趣,它有.NET客户端,并被雅虎使用 - 可以扩展到多个服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接