2011-05-27 77 views
1

我认为缓存键值列表存储在数据库中。现在为了渲染JSF页面,会执行大量冗余查询来查找某些键的显示名称(O/R-Mapper:Eclipselink)。 这些值是准静态的,但可以通过使用应用程序非常少地更改(数据库中没有更改(除了有问题的应用程序除外)。使用相干性缓存的开销

仅使用一个应用程序服务器时,简单缓存就足够了。但是,应该可以使用多个服务器进行负载平衡,避免在使用一台服务器更改数据并因此不反映其他服务器时返回过时值。

一个想法是使用oracle coherence作为分布式缓存。我不确定这是否过分,因为数据只是非常少地改变,缓存本身不需要分发,只有失效应该是。

在内存,执行时间和网络通信方面的一致性开销是多少?有没有更适合我的用例的替代方案?

我说的是50.000个键值对,主要是短字符串。

回答

2

如果失效是非常罕见的,那么您可以使用本地缓存和类似JMS主题的东西,每个人都订阅以处理失效。

还有一些类似EHCache的替代品,因为它是OSS并可以免费使用vs Coherence,如果这很重要的话。我喜欢使用EHCaches通过能力。

1

连贯性的开销相对较低,并且可以轻松管理50,000个(或50,000,000个)对象。但是,如果您的用例非常简单,并且您不介意自己完成失效工作,并且不需要Coherence提供的各种QoS,那么它可能是矫枉过正的。另外,使用Coherence标准版可以很容易地完成这个简单的用例,该版本的价格要低得多(每个服务器而不是每个处理器许可,而且价格要低得多)。

为了充分披露,我在Oracle工作。本文所表达的意见和观点属于我自己的观点,并不一定反映我的雇主的意见或看法。