使用Oracle Coherence,创建新的NamedCache有多贵?

时间:2013-02-25 18:40:44

标签: performance distributed-caching oracle-coherence

在我们希望拥有大量并发用户的项目中,我们可以选择为每个连接的用户(会话)使用命名缓存,或者为所有会话状态使用一个大的命名缓存。使用一个大缓存会更复杂,因为我们需要灵活的机制来将数据附加到会话,但可能更高效。每个会话使用唯一命名高速缓存的主要原因是能够通过简单地销毁命名高速缓存来销毁与其相关的所有数据的简单性。预计这仅在内存中运行,访问率将非常低。

使用一个大缓存会有多高效?使用Coherence使用大量命名缓存实例被认为是“不良做法”吗?简而言之,在Coherence中分配新的命名缓存需要多少开销?

2 个答案:

答案 0 :(得分:2)

通常,与NamedCaches相关的最大开销是创建一个MBean来跟踪其统计信息。复制这些MBean可能会消耗比预期更多的网络带宽。打开JConsole以查看数百或数千个缓存MBean也是不实用的。

如果您的要求是使用多个缓存条目来存储与用户相关的数据,我将使用密钥关联来实现此目的。使用此方法,您可以创建包含用户标识的复合键以及缓存条目的标识符。此方法将强制特定用户的所有数据驻留在同一分区上 - 因此也就是相同的存储成员。

然后,您可以使用此功能将过滤器和条目处理器定位到关联的密钥 - 包括条目处理器,以在用户会话到期时删除缓存条目。这将更加高效,因为它只需要一个缓存服务器来响应对用户的请求,而不是要求整个集群响应销毁缓存的请求。

这些链接可以帮助您入门:

http://docs.oracle.com/cd/E24290_01/coh.371/e22837/api_dataaffinity.htm

http://blackbeanbag.net/wp/2010/06/06/coherence-key-howto/

答案 1 :(得分:0)

为什么不使用CoherenceWeb

CoherenceWeb正是出于此目的,它用于维护用户/会员的会话数据。

在CoherenceWeb中,它使用一个缓存来维护所有用户的会话数据,每个成员都有一个条目。