2014-12-13 2 views
0

В Zookeeper, как мы обрабатываем события «отсутствия изменений данных» между получением обратного вызова из предыдущих часов и сбросом новых часов. Я пытаюсь посмотреть на многие решения, доступные как куратор Apache и другие предложения в Интернете. Но я все еще не понимаю.Часы Zookeeper Пропущенные события

Как мы гарантируем, что мы не пропустим какие-либо события, или существует какой-либо другой способ доказательства, подтверждающий, что мы не пропустим никаких изменений состояния в zookeeper (особенно с изменениями данных узла)? Я понимаю, что правильный опрос - это один из способов. Но это дорого.

ответ

2

Во-первых, я не могу рекомендовать использование Apache-куратора. У этого есть некоторые прекрасные обертки, чтобы сделать вещи супер удобными и более надежными. Он обрабатывает много вещей, которые вы, возможно, могли бы запрограммировать самостоятельно (и все, что трудно понять).

Во-вторых, посмотреть техническую записку в кураторских документы:

https://cwiki.apache.org/confluence/display/CURATOR/TN1

Главная вынос здесь является то, что любой код, вы пишете в ответ на уведомление часы должны вернуться как можно быстрее, и никогда не должны блокировать (на i/o или ожидает ответа от последующего запроса zk, & c).

Поэтому я рекомендую вам (1) создать поток, чтобы обработать код, который запускает часы, и (2), как и в любом распределенном/параллельном сценарии, проверить данные как одну из первых вещей, которые кодируются в это новый поток. У этого есть некоторые накладные расходы, но это лучше, чем опрос.

Регулярный опрос никогда не должен быть в игре с zookeeper - вот для чего предназначены часы. Вы знаете, когда нужно проверить, изменены ли данные. Вы проверяете, когда часы данных запускают точно, чтобы фиксировать виды последующих обновлений, о которых вы беспокоитесь.

+0

Спасибо за ваши ценные предложения Мэтью. Даже я склонен к использованию куратора !. –

Смежные вопросы