我编写了用于缓存的hazelcast缓存framewrok,并编写了一个用于通过构造函数注入进行缓存的专用hazelcast服务器。只想知道IMap对象存储在哪里?它是在我的hazelcast服务器中还是在运行此类的应用程序中?
public String hazelClientServer;
public static HazelcastInstance hazelcastInstance;
// setting through constructor injection
public HazelCastCache(String hazelClientServer) {
this.hazelClientServer = hazelClientServer;
}
private IMap<Object, Object> getMap(String mapName,String configName){
Config conf = new Config(configName);
MapConfig mapConfig = new MapConfig(mapName);
mapConfig.setEvictionPolicy(EvictionPolicy.LRU);
mapConfig.setEvictionPercentage(10);
conf.addMapConfig(mapConfig);
conf.getNetworkConfig().setPublicAddress(hazelClientServer);
hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(conf);
IMap<Object, Object> hazelMap=hazelcastInstance.getMap(mapName);
return hazelMap;
}
public Object getDataFromCache(String mapName,String configName,Object key){
IMap<Object, Object> dataMap = getMap(mapName,configName);
Object data = dataMap.get(key);
return data;
}
public void addDataToCache(String mapName,String configName,Object key,Object value){
IMap<Object, Object> dataMap = getMap(mapName,configName);
dataMap.put(key, value);
}
这取决于您启动集群的方式。
这是文档指出的内容:
在嵌入式拓扑中,成员包括数据和应用程序。如果您的应用程序专注于高性能计算和许多任务执行,则这种类型的拓扑最有用。由于应用程序靠近数据,因此此拓扑支持数据局部性。
在客户端-服务器拓扑中,您将创建成员集群并独立扩展集群。您的应用程序托管在客户端上,并且客户端与群集中的成员进行通信以获取数据。
通过查看代码,您将以嵌入式模式启动集群/节点,在这种情况下,数据驻留在应用程序服务器本身中。因此,您还需要考虑缓存大小,以便为应用程序容器分配内存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句