分布式Hazelcast缓存中的异步值计算

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

当前设置

我有两个应用程序在两台独立的机器上运行的实例。两个应用程序节点共享分布式缓存的Hazelcast配置。缓存适用于常规IMap<String, SomeSerializableValue>

问题

现在我有一个案例,其中可缓存值的计算是缓慢且昂贵的。我想确保仅在单个应用程序节点上计算给定键的值。如果另一个节点获取密钥的值但计算仍在进行中,则此节点应等待计算完成。

理想的解决方案是这样的:

IMap<String, CompletableFuture<SomeSerializableValue>>

但这种方法显然不起作用,因为CompletableFuture不可序列化。

Hazelcast中有没有可以满足我要求的替代解决方案?

例如,咖啡因有AsyncLoadingCache的概念。但是,它没有分发。 Hazelcast可以缓存异步计算的值吗?

java caching hazelcast hazelcast-imap
1个回答
1
投票

Offloadable Entry Processor会工作吗?

这允许您在侧面线程中对Map.Entry.Value应用“长时间运行”更新。

更新正在运行时,读取调用将返回现有值。只有在更新计算完成后,写入才会变得可见。

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