我的Spring应用程序由十几个微服务组成。每个微服务提供的数据并不经常变化。为了减少微服务之间的沟通,我正在考虑开始使用Hazelcast。如何配置Hazelcast集群中的复制缓存?
我的想法是,每个微服务都会嵌入Hazelcast。微服务运行在同一个网络中,我认为Hazelcasts会形成一个集群。每个微服务将在启动时将其数据放入本地Hazelcast,并将数据复制到群集中的其他所有Hazelcast。当微服务需要从其他微服务加载数据时,它首先会查看本地Hazelcast,并且只有当数据从本地缓存中丢失时,才会进行网络调用。
是否可以用Hazelcast配置类似这样的东西?我已经尝试过了,但微服务的数据恰巧分布在集群中的所有Hazelcast节点上。
我用很琐碎的配置:
@Configuration
@EnableCaching
@Profile("hazelcast")
public class HazelcastCacheConfiguration {
@Bean
public Config hazelcastConfig() {
return new Config()
.setInstanceName("routes-cache")
.addMapConfig(
new MapConfig()
.setName("ports-cache")
.setEvictionPolicy(EvictionPolicy.LRU)
).addMapConfig(
new MapConfig()
.setName("routes-cache")
.setEvictionPolicy(EvictionPolicy.LRU)
).setProperty("hazelcast.logging.type", "slf4j");
}
}
我碰到在Hazelcast管理中心集群检查的数据复制。我的样本数据集只有13条记录。微服务已将启动时的13条记录推送到本地Hazelcast,并且在管理中心中我看到群集中有2个节点,其中一个节点上有9个记录,其他微服务的节点上有4个记录。
预先感谢您!