使用coherence缓存的开销

时间:2011-05-27 06:21:37

标签: java performance caching oracle-coherence

我考虑缓存存储在数据库中的键值列表。现在,为了呈现JSF页面,执行了许多冗余查询以找到要为某些键显示的名称(O / R-Mapper:Eclipselink)。 这些值是准静态的,但是通过使用应用程序可以很少改变(除了有问题的应用程序之外,数据库没有变化)。

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

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

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

我谈到了50.000个键值对,主要是短字符串。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

Coherence的开销相对较低,可以轻松管理50,000(或50,000,000)个对象。但是,如果你的用例非常简单,并且你不介意自己做失效工作,并且不需要Coherence提供的各种QoS,那么它可能是过度的。

此外,使用Coherence标准版可以很容易地完成这个简单的用例,这个版本便宜得多(每台服务器而不是每个处理器获得许可,而且价格要低得多)。

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