1

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

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

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

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

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

4

2 回答 2

2

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

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

于 2011-05-27T07:00:23.167 回答
1

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

此外,这个简单的用例可以使用成本低得多的 Coherence 标准版轻松完成(按服务器而不是按处理器获得许可,而且价格要低得多)。

为了全面披露,我在 Oracle 工作。这篇文章中表达的观点和观点是我自己的,并不一定反映我雇主的观点或观点。

于 2014-02-14T17:22:20.000 回答