springboot + infinispan失效模式:如何与共享缓存一起使用?

时间:2019-03-13 10:31:28

标签: spring-boot infinispan

我有一个用于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"。所以我只能使用同步复制。

对于失效和同步复制,哪种性能更好?

期待您的帮助。谢谢

1 个答案:

答案 0 :(得分:2)

除非使用ClusterLoader,否则弹簧注释将不完全支持INVALIDATION模式。在内部使用put的注释中,我们可能会考虑在将来添加一项功能来支持putForExternalRead的行为,但是很快就不会出现。 注释在LOCAL,REPL和DIST模式下可以很好地工作。

ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
    .addClusterLoader()
    .remoteCallTimeout(500);

如果您担心获取陈旧的值并且对复制的缓存不满意,则可以考虑使用分布式缓存。