0

我们一直在使用 Hazelcast 2.6.8 并升级到 3.5。升级的原因是缓存数据出现间歇性问题。但是升级并没有解决问题。 

我们试图在 Hazelcast IMap 中缓存 100 个 java 普通对象,我们从外部数据库缓存这些对象。缓存对象通过 Hazelcast 的 ConcurrentMap 在集群中共享。我们有一个由 6 个节点组成的集群,每当我们停止并启动这 6 个节点中的 2 个时,我们会发现一些 java 对象丢失了,它的发生率随着丢失的数量而变化,尽管丢失的数量通常约为 90 个对象在地图上而不是 100。

最初备份计数属性已设置为 3,但由于失败,我们将其增加到 6。

使用的 IMap 方法是用于检索数据的 loadAll 方法。这是我们正在使用的配置,StoreClass 实现了 Hazelcast MapStore:

<map name="objectsMap">
<backup-count>6</backup-count>
<near-cache>
<time-to-live-seconds>0</time-to-live-seconds>
<max-idle-seconds>6000</max-idle-seconds>
<eviction-policy>LRU</eviction-policy>
<max-size>5000</max-size>
<invalidate-on-change>true</invalidate-on-change>
</near-cache>

<map-store enabled="true">
<class-name>StoreClass</class-name>
<write-delay-seconds>0</write-delay-seconds>

4

1 回答 1

0
<invalidate-on-change>true</invalidate-on-change>

如果为 true,则所有成员都会监听其缓存条目中的更改,并在更新或删除条目时将其逐出。

将其更改为 false 并尝试。有用。

现在<backup-count>6</backup-count>可以将其设置为所需的较低数字。建议不要有大数字作为备份。1 或 2 应该足以满足要求。

于 2015-08-31T10:24:06.837 回答