【发布时间】:2017-07-24 08:11:00
【问题描述】:
我的 Spring 应用程序由十几个微服务组成。每个微服务都提供数据,这些数据不会经常变化。为了减少微服务之间的通信,我正在考虑开始使用 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 条记录。
提前谢谢你!
【问题讨论】:
标签: hazelcast