|
|
|
Понимание работы hazelcast
|
|||
|---|---|---|---|
|
#18+
Добрый день уважаемые гуру, я с hazelcast только начинаю работать поэтому возможно мои вопросы покажутся тривиальными: Допустим у нас есть 2 ноды и hazelcast в embeeded режиме: н1 и н2, есть какая-то мапа и данные распределились по обеим нодам, у мапы 1 синхронный бекап. Теперь я находясь в н1 я хочу получить по ключу данные которые лежат в н2, я обращаюсь к мапе, hazelcast понимает что данные на другой ноде, обращается к ней, но в этот самый момент н2 падает, что мне будет возвращено в итоге как результат метода get? Будет ли сразу начат механизм исключения не отвечающей ноды из кластера? Есть 2 физические машины, на каждой из машин будут запущены разные сервисы. К примеру на машине есть сервис для работы с пользователями и сервис билинга. На второй машине так же присутствуют эти же сервисы для отказоустойчивости. Синхронизация между одинаковыми сервисами идет через hazelcast и каждый тип сервиса использует embeeded режим. Но сервис с пользователями создается instance hazelcast с groupName: user, а биллинг соответственно billing. При этом настойки сети у hazelcasta независимо от типа сервиса одинаковые, используют TcpIpConfig и ссылаются друг на друга. Теперь скажем в сервисе по работе с пользователями я использую IExecutorService и выполняю разные таски и так же в сервисе биллинга, но такси другие. Не случится ли такого, что таск предназначенный для работы внутри сервиса пользователей, попадет в билинг(будет передан сервису билинга)? Правильно ли я понимаю, что в hazelcast кластере все узлы соединены со всеми? Как в данном случаи работает механизм исключения ноды из-за пропущенных heartbeat если нет мастера? Кто принимает данные решение? Правильно ли я понимаю, что для определенных мапов можно настроить такой режим что данные в них будут сохраняться только если большинство участников кластера подтвердили это? CP в CAP теореме, тогда как по дефолту мапы работают как AP? Правильно ли я понимаю, что когда мы добавляем слушатель для мапы к примеру на добавление элемента, то его код отправляется на все ноды кластера и потом уже на конкретной ноде когда происходит вставка данных в ее локальную мапу, логика hazelcast видит что слушатель есть и что был добавлен с такой-то машины и посылает на эту машину событие? Правильно ли я понимаю, что при старте приложения если hazelcast используется в embeeded режиме, то пока нода не задеплоится, в кластере приложение как бы не работает, то есть не будут в мапу ходить put-get и обращающийся поток будет просто висеть запаркованным в системе? А если нода уходит из кластера и оставшимся нужно перестроить кеш у них операции с hazelcast «встают на паузу»? Можете объяснить как это работает? Если не сложно, опишите пожалуйста как работает DurableExecutorService, особенно при разрыве сетти или падении выполняющей ноды,как на второй ноде происходит понимания этого и запуск таска? Я читал в документации про подмену значений в кольцевом буфере и т. д., но к сожалению не полностью это понял. Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 18:03 |
|
||
|
Понимание работы hazelcast
|
|||
|---|---|---|---|
|
#18+
Прошу прощения не отформатировла текст выше, поэтому вставлю его же, но в читаемом виде ниже: 1. Допустим у нас есть 2 ноды и hazelcast в embedded режиме: н1 и н2, есть какая-то мапа и данные распределились по обеим нодам, у мапы 1 синхронный бекап. Теперь я находясь в н1 я хочу получить по ключу данные которые лежат в н2, я обращаюсь к мапе, hazelcast понимает что данные на другой ноде, обращается к ней, но в этот самый момент н2 падает, что мне будет возвращено в итоге как результат метода get? Будет ли сразу начат механизм исключения не отвечающей ноды из кластера? 2. Правильно ли я понимаю, что в hazelcast кластере все узлы соединены со всеми? Как в данном случаи работает механизм исключения ноды из-за пропущенных heartbeat если нет мастера? Кто принимает данные решение? 3. Правильно ли я понимаю, что когда мы добавляем слушатель для мапы к примеру на добавление элемента, то его код отправляется на все ноды кластера и потом уже на конкретной ноде когда происходит вставка данных в ее локальную мапу, логика hazelcast видит что слушатель есть и что был добавлен с такой-то машины и посылает на эту машину событие? 4. Правильно ли я понимаю, что при старте приложения если hazelcast используется в embedded режиме, то пока нода не задеплоится, в кластере приложение как бы не работает, то есть не будут в мапу ходить put-get и обращающийся поток будет просто висеть запаркованным в системе? А если нода уходит из кластера и оставшимся нужно перестроить кеш у них операции с hazelcast «встают на паузу»? Можете объяснить как это работает? 5. Если не сложно, опишите пожалуйста как работает DurableExecutorService, особенно при разрыве сетти или падении выполняющей ноды,как на второй ноде происходит понимания этого и запуск таска? Я читал в документации про подмену значений в кольцевом буфере и т. д., но к сожалению не полностью это понял. Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 18:18 |
|
||
|
Понимание работы hazelcast
|
|||
|---|---|---|---|
|
#18+
slippery, тоже начал заниматься hazelcast - разберусь и постараюсь ответить на вопросы, может, кому пригодится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2017, 00:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39570392&tid=2122400]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 396ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...