1

我目前有一个通过 RMI 使用 EHCache 的分布式缓存,效果很好。我想知道您是否可以在缓存中包含持久性以创建分布式持久缓存。

除此之外,如果缓存是持久的,它会从文件存储加载,然后从缓存集群引导?基本上,我想要的是:

  • 缓存开始
  • 缓存从文件存储中加载持久对象
  • 缓存加入分布式集群并正常引导

这背后的用例是在独立机器上运行 2 个相同的组件,分配缓存以避免在其中一个组件发生故障时丢失数据。持久性将防止在两个组件都失败的罕见情况下丢失所有数据。

转移到另一种分发方法(例如 Terracotta)会支持这一点吗?

4

2 回答 2

3

我会看看 EHCache 中的直写缓存选项。如链接中所述,结合读取和写入缓存将为用户定义的数据存储提供持久性。

Terracotta 给您的是一致性(因此您不必担心解决集群成员之间的冲突)。您可以选择为自己的商店定义一个接口(通过CacheLoaderCacheWriter或只是让 Terracotta 持久化您的数据,但我收到了来自 Terracotta 的混合信号以及关于 TC 是否适合记录系统的文档。如果您的数据是瞬态并且可以随时被吹走(例如网络会话),它可能没问题。

于 2010-04-30T01:25:50.310 回答
1

将 bootstrapCacheLoaderFactory 元素与 cacheEventListenerFactory 添加到缓存中(当它关闭时需要从其他节点引导并在该节点有任何更新时与其他节点复制)

memoryStoreEvictionPolicy="LFU" diskPersistent="true"
timeToLiveSeconds="86400" maxElementsOnDisk="1000">

于 2011-02-04T00:06:00.637 回答