我有一个用于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"
。所以我只能使用同步复制。
对于失效和同步复制,哪种性能更好?
期待您的帮助。谢谢
答案 0 :(得分:2)
除非使用ClusterLoader,否则弹簧注释将不完全支持INVALIDATION模式。在内部使用put
的注释中,我们可能会考虑在将来添加一项功能来支持putForExternalRead
的行为,但是很快就不会出现。
注释在LOCAL,REPL和DIST模式下可以很好地工作。
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addClusterLoader()
.remoteCallTimeout(500);
如果您担心获取陈旧的值并且对复制的缓存不满意,则可以考虑使用分布式缓存。