Как использовать AtomicLong в подсистеме Hazelcast CP всего с 2 узлами кластера Hazelcast? - PullRequest
0 голосов
/ 02 мая 2019

Я обновляюсь до последней версии Hazelcast [3.12] и столкнулся с проблемой получения экземпляра AtomicLong.В новой версии HZ вводится концепция теоремы CAP, чтобы обеспечить согласованность и допуск раздела, но проблема в том, что подсистема CP должна иметь как минимум 3 члена.

Config config = new Config();
config.getCPSubsystemConfig().setCPMemberCount(3);
config.getCPSubsystemConfig().setGroupSize(3);

HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(config);

Как настроитьПодсистема CP, предоставляющая мне экземпляр atomicLong только с двумя узлами Hazelcast?

Если я запускаю свое приложение только с одним узлом, выводится следующее сообщение:

MetadataRaftGroupManager.log: 65 [127.0.0.1]: 6000 [dev] [3.12] Подсистема CP ожидает 3 участника, чтобы присоединиться к кластеру.Текущее число участников: 1

У меня будет только два узла, поэтому подсистема CP не позволяет мне использовать atomicLong, потому что она будет ждать вечно по крайней мере 3 узла ..

Версия 3.11, которую я только что назвал hazelcast.getAtomicLong("count").Как я могу справиться с этим?

1 Ответ

1 голос
/ 02 мая 2019

Подсистема CP не может быть сконфигурирована для работы с менее чем 3 узлами, потому что это может привести к потере "согласованности", которая является всей целью подсистемы CP при некоторых сценариях сбоя (разбиение сети).

Вывы все еще можете использовать API 3.11, поэтому код из вашей реализации 3.11 будет продолжать работать.Хотя API 3.11 помечены как устаревшие, они не удаляются и не отключаются;устаревание - это предупреждение о том, что API-интерфейсы, как известно, уязвимы для проблем согласованности в сценарии с разделением мозга.Некоторый код приложения терпим к таким проблемам, и уязвимость не является проблемой;если ваше приложение не терпит потенциальной проблемы согласованности с атомарным длинным, то потребуется добавить дополнительный узел для перехода к реализации CP.

...