我们一直在使用Hazelcast 2.6.8并升级到3.5。升级的原因似乎是缓存数据的间歇性问题。然而,升级并没有解决这个问题。
我们正在尝试在Hazelcast IMap中缓存100个java普通对象,这些对象是从外部数据库缓存的。缓存的对象通过Hazelcast的ConcurrentMap在整个集群中共享。我们有一个由6个节点组成的集群,每当我们停止和启动这6个节点中的2个节点时,我们发现一些java对象丢失了,它的出现次数随着丢失的数量而变化,尽管当丢失时,地图中的对象数量通常是90个左右,而不是100个。
最初backup-count属性设置为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>发布于 2015-08-31 18:24:07
<invalidate-on-change>true</invalidate-on-change>如果为true,则所有成员都会侦听其缓存条目中的更改,并在更新或删除条目时将其逐出。
将其更改为false,然后尝试。它起作用了。
现在可以将<backup-count>6</backup-count>放到所需的较低数字。建议不要有大的数字作为备份。1或2应满足要求。
https://stackoverflow.com/questions/31543740
复制相似问题