我已经使用MapLoader
和loadAll
键功能实现了通读,该功能在映射初始化期间将特定的键和值列表从数据库加载到Hazelcast映射。我的问题是,如果某个成员出现故障,我需要相应地重新填充这些键和值。这是因为我们积极使用Hazelcast谓词来搜索相关数据(而不是按关键字(,但如果某个成员出现故障,我们很可能无法从缓存中获得实际结果。
据我所知,Hazelcast也不会创建任何用MapLoader
配置的数据备份。我唯一能想到的一个选项是,一旦任何成员出现故障,就强制调用MapLoader
的loadAll
函数。但并不确定如何实现同样的功能。我也愿意接受其他建议。
我不确定是什么让你相信这一点。Backups和MapLoader是地图上两个独立的配置设置,您可以独立配置它们。因此,除非您配置了零备份,否则您的数据将有一个备份,即使是由MapLoader
加载时也是如此。
有关更多信息,请参阅文档中的"确保地图数据安全"部分。
如果要使用MapLoader重新加载数据,则可以对所有数据使用com.hazelcast.map.IMap#loadAll(boolean)
,或对特定密钥集使用com.hazelcast.map.IMap#loadAll(java.util.Set<K>, boolean)
。