Добрый день уважаемые гуру, я с hazelcast только начинаю работать поэтому возможно мои вопросы покажутся тривиальными:
Допустим у нас есть 2 ноды и hazelcast в embedded режиме: н1 и н2, есть какая-то мапа и данные распределились по обеим нодам, у мапы 1 синхронный бекап. Теперь я находясь в н1 я хочу получить по ключу данные которые лежат в н2, я обращаюсь к мапе, hazelcast понимает что данные на другой ноде, обращается к ней, но в этот самый момент н2 падает, что мне будет возвращено в итоге как результат метода get? Будет ли сразу начат механизм исключения не отвечающей ноды из кластера?
Правильно ли я понимаю, что в hazelcast кластере все узлы соединены со всеми? Как в данном случаи работает механизм исключения ноды из-за пропущенных heartbeat если нет мастера? Кто принимает данные решение?
Правильно ли я понимаю, что когда мы добавляем слушатель для мапы к примеру на добавление элемента, то его код отправляется на все ноды кластера и потом уже на конкретной ноде когда происходит вставка данных в ее локальную мапу, логика hazelcast видит что слушатель есть и что был добавлен с такой-то машины и посылает на эту машину событие?
Правильно ли я понимаю, что при старте приложения если hazelcast используется в embedded режиме, то пока нода не задеплоится, в кластере приложение как бы не работает, то есть не будут в мапу ходить put-get и обращающийся поток будет просто висеть запаркованным в системе? А если нода уходит из кластера и оставшимся нужно перестроить кеш у них операции с hazelcast «встают на паузу»? Можете объяснить как это работает?
Если не сложно, опишите пожалуйста как работает DurableExecutorService, особенно при разрыве сетти или падении выполняющей ноды,как на второй ноде происходит понимания этого и запуск таска? Я читал в документации про подмену значений в кольцевом буфере и т. д., но к сожалению не полностью это понял.
Заранее благодарен
Продвижение своими сайтами как стратегия роста и независимости