Есть ли какой-то вариант в Hazelcast, чтобы сделать значения кэша карты на узел и не реплицировать его состояние? Я думал, что это была разница между getMap()
и getDistributedMap()
, но кажется, что они реплицируются между узлами.Hazelcast: Могу ли я настроить карту на JVM?
У меня есть приложение в Weblogic кластере, моя конфигурация:
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast>
<properties>
<property name="hazelcast.logging.type">slf4j</property>
</properties>
<network>
<port auto-increment="true">5107</port>
<join>
<multicast enabled="false" />
<tcp-ip enabled="true">
<members>127.0.0.1:5701, 127.0.0.2:5702</members>
</tcp-ip>
</join>
</network>
<map name="default">
<time-to-live-seconds>1800</time-to-live-seconds>
<backup-count>0</backup-count>
<eviction-policy>LRU</eviction-policy>
</map>
</hazelcast>
В журналах я могу видеть, что оба узла до
Members [2] {
Member [127.0.0.1]:5107
Member [127.0.0.1]:5108 this
}
Когда я называю мой метод в первом узел Я вижу, что кеш добавлен
.Default (self-tuning)'] [] DEBUG b.c.l.c.c.i.e.c.h.AbstractHazelcastCacheInterceptor - Hazelcast instance HazelcastInstance{name='my-instance', node=Address[127.0.0.1]:5107}
2015-03-31 21:09:40.040 [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [] DEBUG b.c.l.c.c.i.e.c.h.AbstractHazelcastCacheInterceptor - Cache map IMap{name='MY_APP.Cache.cacheName'}
2015-03-31 21:09:40.040 [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [] DEBUG b.c.l.c.c.i.e.c.h.AbstractHazelcastCacheInterceptor - adding object in the cache with key 2342425
Но во втором узле я вижу только имя кеша log, поэтому он использует уже добавленный кеш ...
.Default (self-tuning)'] [] DEBUG b.c.l.c.c.i.e.c.h.AbstractHazelcastCacheInterceptor - Hazelcast instance HazelcastInstance{name='my-instance', node=Address[127.0.0.1]:5108}
2015-03-31 21:09:40.040 [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [] DEBUG b.c.l.c.c.i.e.c.h.AbstractHazelcastCacheInterceptor - Cache map IMap{name='MY_APP.Cache.cacheName'}
Не хватает конфигурации? Можно ли добиться успеха с Hazelcast?
Почему вы хотите использовать Hazelcast для этого вместо обычной карты Java (или кэш Guava или что-то подобное)? –
Требование состоит в том, чтобы иметь возможность выполнять распределенный выдворк, но не передавать данные кеша. –
, чтобы вы могли размещать вещи только локально, но когда вы выселяете, он должен выходить на всех узлах? это не похоже на очень прозрачное решение. Не думайте, что hazelcast поддерживает это, предполагая, что вы можете легко реализовать его, используя «ITopic» из hazelcast, публикуя выселение и имея слушателя на каждом узле. –