我们有一个应用程序在 1 或 2 个节点上运行,具体取决于环境,并具有基于 Hazelcast 的共享缓存。
应用程序上的一个请求会在此缓存上触发大约 1000 个请求(所有缓存命中)。
在单节点配置中,这很好用。具体来说,每个请求需要不到 10 毫秒。
但是如果我们使用 2 个节点,每个缓存请求大约需要 20-200ms。我们认为这是因为 Hazelcast 从远程节点获取数据,这当然涉及网络流量。因此,我们将其配置为使用 NearCache,据我们了解,这应该会导致与单个本地缓存大致相同的访问速度。但它没有,它似乎根本对性能没有影响。
所以现在我想知道:
- 如何检查 NearCache 配置是否真的有效?
- 如何获得接近本地缓存的读取性能,但更新(异步)通信到/所有远程缓存,我认为我可以通过配置 NearCache 来获得?
我们使用以下配置初始化缓存:
HazelcastConfiguration.getOrCreateCache(
cacheName,
new CacheConfig<K, CR>()
.setNearCacheConfig(new NearCacheConfig())
.setExpiryPolicyFactory(
HazelcastConfiguration.createExpiryPolicyFactory(expiryAfterModification)),
cacheManager
);