使用 EmbeddedCacheManager 时,Azure Kubernates 集群节点中的 Infinispan 缓存不会被逐出

问题描述 投票:0回答:1

我是在 Spring Boot 中配置 Infinispan 缓存的新手。我已经设置了两个 Spring Boot 应用程序,节点 1 和节点 2。我使用 Infinispan 集群缓存,并使用具有全局配置的 EmbeddedCacheManager 创建了一个 bean。在我的设置中,我填充节点 2 中的缓存并尝试在节点 1 中驱逐它,这在本地运行良好。但是,当我将应用程序部署到具有两个 pod(app1 和 app2)的 Azure Kubernetes 环境时,我遇到了一个问题,即无法从 app2 中填充的 app1 中逐出缓存。

ConfigurationBuilder confBuilder = new ConfigurationBuilder();
    confBuilder.expiration().lifespan(8, TimeUnit.HOURS);
    confBuilder.clustering().cacheMode(CacheMode.DIST_SYNC);
    confBuilder.clustering().stateTransfer().awaitInitialTransfer(false);
    confBuilder.transaction().transactionMode(TransactionMode.TRANSACTIONAL);
    confBuilder.build()

    

我已经在本地尝试过,可以从另一个节点驱逐一个节点中的缓存。请帮助我提出任何建议或配置更改。 我想知道我是否应该改用 RemoteCacheManager,或者我的缓存配置是否可能有问题。

spring-boot azure kubernetes infinispan
1个回答
0
投票

我假设您正在调用

Cache.evict()
方法。驱逐对于缓存和节点来说是本地的。来自 evict() javadoc:

请注意,该条目不会从任何已配置的缓存存储或集群中的任何其他缓存中删除(如果在集群模式下使用)。

© www.soinside.com 2019 - 2024. All rights reserved.