Infinispan Распределенный режим cluster-cache-quickstart

Привет всем, я новичок в Infinispan, и у меня есть несколько вопросов относительно распределенного режима и быстрого запуска, представленных в infinispan / infinispan- quickstart · GitHub, в частности, clustertered-cache-quickstart.

Во-первых, насколько я понимаю, распределенный режим позволяет определить количество копий записей, а не режим репликации, который реплицирует записи во всех узлах. Например, если бы у нас было 3 записи (1, 2, 3) и 3 кеша (A, B, C), где numOwners (2), результирующее представление кластера в распределенном режиме могло бы выглядеть так: A, содержащее 1,2, B, содержащее 2 , 3 C, содержащий 3,1 Где скопированный режим кластера приведет к: A, B и C, содержащим 1,2,3 Пожалуйста, поправьте меня, если мое предположение неверно.

Более того, я запускаю infinispan-quickstart / cluster-cache · GitHub это краткое руководство с использованием этих инструкций

Чтобы попробовать распределенный кеш, выполните следующую команду в отдельных терминалах:

Терминал 1

mvn compile exec:java -Djava.net.preferIPv4Stack=true -Dexec.mainClass="org.infinispan.quickstart.clusteredcache.Node" -Dexec.args="-d A"

Терминал 2

mvn compile exec:java -Djava.net.preferIPv4Stack=true -Dexec.mainClass="org.infinispan.quickstart.clusteredcache.Node" -Dexec.args="-d B"

Терминал 3

mvn compile exec:java -Djava.net.preferIPv4Stack=true -Dexec.mainClass="org.infinispan.quickstart.clusteredcache.Node" -Dexec.args="-d C"

Все мои узлы имеют одинаковые записи (я ограничил количество записей до 10):

Узел А

    Cache contents on node A-29339
    key-0 = A-29339-0
    key-1 = A-29339-1
    key-2 = A-29339-2
    key-3 = A-29339-3
    key-4 = A-29339-4
    key-5 = A-29339-5
    key-6 = A-29339-6
    key-7 = A-29339-7
    key-8 = A-29339-8
    key-9 = A-29339-9

Узел B

    Cache contents on node B-36604
    key-0 = A-29339-0
    key-1 = A-29339-1
    key-2 = A-29339-2
    key-3 = A-29339-3
    key-4 = A-29339-4
    key-5 = A-29339-5
    key-6 = A-29339-6
    key-7 = A-29339-7
    key-8 = A-29339-8
    key-9 = A-29339-9

Узел C

    Cache contents on node C-26839
    key-0 = A-29339-0
    key-1 = A-29339-1
    key-2 = A-29339-2
    key-3 = A-29339-3
    key-4 = A-29339-4
    key-5 = A-29339-5
    key-6 = A-29339-6
    key-7 = A-29339-7
    key-8 = A-29339-8
    key-9 = A-29339-9

Однако в документации Начало работы с Infinispan сказано, что: Вы также можете увидеть, что каждый узел содержит другой набор записей, нажав Enter. Тем не менее, мой вывод показывает, что все записи в основном реплицируются, как если бы это было сделано в реплицированном режиме. Есть идеи, почему это происходит так?


person DonatasD    schedule 03.05.2015    source источник
comment
Кажется, что узлы B и C ничего не записывали в кеш, в то время как кеши были кластеризованы, поскольку записи A реплицируются. Не могли бы вы загружать и связывать журналы?   -  person Radim Vansa    schedule 04.05.2015
comment
Перекрестные ссылки на форумы JBoss: developer.jboss.org/message/928129   -  person Radim Vansa    schedule 04.05.2015


Ответы (1)


Ответил на форумах JBoss Тристан Таррант, скопировав ответ:

Это связано с тем, что краткое руководство не было правильно обновлено, когда мы изменили поведение entrySet / keySet в 7.0. Раньше эти методы возвращали данные только на локальном узле, но теперь они возвращают данные со всех узлов. Чтобы получить старое поведение (т.е. только локальный контент), вам необходимо указать флаг CACHE_MODE_LOCAL, чтобы другие удаленные узлы не запрашивали данные.

Итак, измените Node.java @ строку 133 с:

ArrayList<Map.Entry<String, String>> entries = new ArrayList<>(cache.entrySet());  

to

ArrayList<Map.Entry<String, String>> entries = new ArrayList<>(cache.getAdvancedCache().withFlags(Flag.CACHE_MODE_LOCAL).entrySet());  
person Radim Vansa    schedule 04.05.2015