我的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個記錄。
預先感謝您!