我有一个使用infinispan的springboot项目在集群下运行缓存的失效模式。
这个任务是关于infinispan。事实上,我读了官方文件:"In invalidation, the caches on different nodes do not actually share any data"
,现在我处于这种情况。
我使用提供的方法:Cache.putForExternalRead(key, value)
,这个方法可以解决当我将数据放入节点A的缓存时,B节点使其无效的问题,但是我不能使用springboot注释,例如@Cacheable。
我还读到“无效模式可以与共享缓存存储一起使用”。从文档,但我不知道如何做到这一点,我希望你能提供一些帮助。
我希望实现的目标是在失效模式下,我将数据放入节点A的缓存中,节点B将接受来自A的复制数据。我可以使用失效模式吗?
我尝试使用无效模式打开CLusterLoader
但是当节点从其他节点获取数据时存在获取旧值的风险。
我现在使用复制模式。但是,"replication practically only performs well in small clusters(under 10 nodes)"
和"Asynchronous replication is not recommended"
。所以我只能使用同步复制。
哪种性能对于失效和同步复制会更好?
期待您的帮助。谢谢
除非使用ClusterLoader,否则Spring注释不会完全支持INVALIDATION模式。在引擎盖注释使用put
,我们可能会考虑添加一个功能来支持将来的putForExternalRead
行为,但它不会很快就会存在。注释适用于LOCAL,REPL和DIST模式。
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addClusterLoader()
.remoteCallTimeout(500);
如果您害怕获取过时的值并且无法使用复制的缓存进行足够的性能,则可以考虑使用分布式缓存。