2016-12-07 10 views
0

Я написал фреймворк карусели для просмотра кеширования и выделенный один сервер для лесного камня для кэширования через инъекцию конструктора. Просто хотите знать, где хранится объект IMAP? Является ли он на моем сервере 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); 

} 

ответ

1

Это зависит от того, как вы начали кластер.

Это то, что документация гласит:

В встраиваемой топологии, члены включают как данные и приложения. Этот тип топологии является наиболее полезным, если ваше приложение фокусируется на высокопроизводительных вычислениях и многих задачах . Поскольку приложение близко к данным, эта топология поддерживает местность данных.

В топологии клиент-сервер вы создаете кластер членов и масштабируете кластер независимо. Ваши приложения размещаются на клиентах , а клиенты обмениваются данными с членами в кластере для получения данных.

Глядя на ваш код, вы начинаете кластер/узел в интегрированном режиме, в этом случае данные хранятся на сервере приложений сам. Поэтому вам нужно также рассмотреть размер кеша, чтобы выделить память для контейнера приложения.

+0

Спасибо! Ваше предложение несколько полезно для меня. Мое мнение состояло в том, что данные хранятся на сервере hazelcast, и оттуда мое приложение реплицирует его локально. Но когда я перезапущу свое приложение. сервер, кеш-карта пуста, несколько поднимает вопрос о том, как данные не сохраняются, поскольку я не перезапускал сервер hazelcast. Может быть, когда сервер приложений перезагружен, карта в кеш-сервере также сбрасывается, что может быть одним возможным сценарием, а второе может быть вашим. –

+0

Ваше понимание неверно при сбросе кеша. В любом случае данные хранятся только в контейнере Hazelcast. Но поскольку вы начали работать в режиме Embedded, если вы остановите свой сервер приложений, он также выключит кластер Hazelcast, что приведет к потере всех данных. Я бы предпочел, чтобы вы начали кластер Hazelcast как автономный, а затем использовали HazelcastClient для доступа к данным с этого сервера HZ. –

+0

Хорошо. В этом случае мои данные всегда будут присутствовать в кластере ящериц, даже если я перезапущу свой сервер приложений, если только я не очищу кластер? –

0

Не уверен, что я понял вопрос, но если этот код находится внутри приложения, он запускается внутри приложения.

+0

Если вы работали в кешировании, вы поймете мой qusetion.Cached данные хранятся в IMAP выше. Мой вопрос в том, где находится этот IMap, в сервере hazelcast, который находится вне приложения или внутри моего приложения. –

+1

С внешним кластером данные хранятся в кластере (вне вашего приложения) во встроенном кластере, данные хранятся внутри вашего приложения (но все еще в кластере, так как ваше приложение является кластером). Тем не менее, данные всегда хранятся в кластере. – noctarius

+0

Thanks noctarius –