Как Apache Curator пытается восстановить соединение после окончания сеанса?
Я читаю документацию Apache Curator, но не могу точно понять, какую политику он пытается применить по истечении сеанса.
Будет ли он немедленно установить соединение в состояние LOST, или он попытается повторно подключиться и заново установить все наблюдатели, и только после N неудачных попыток он установит соединение в LOST?
Если он попытается восстановить, правильно ли он сбросит эфемерные узлы и часы?
1 ответ
Во-первых, в ZooKeeper истечение срока сессии (с точки зрения клиента) не происходит, пока вы не восстановите соединение с работоспособным ансамблем. то есть вы не знаете, что ваш сеанс закончился, пока вы не восстановите соединение.
Apache Curator (примечание: я являюсь основным автором) представляет концепцию "состояния соединения", которая является абстракцией поверх внутренней концепции состояния ZooKeeper. Важно отметить, что обработка состояния соединения куратором изменилась по сравнению с версиями до 3.x и версиями 3.x и выше.
До 3.x состояние соединения куратора не имело отношения к сеансу ZooKeeper. Состояние соединения LOST означало только то, что настроенный RetryPolicy отказался. В Кураторе 3.x и выше, когда соединение с ансамблем потеряно, Куратор устанавливает внутренний таймер, и если этот таймер передает согласованное время ожидания сеанса до повторного подключения к ансамблю ZooKeeper, Куратор меняет значение на LOST и "подделывает" время ожидания сессии на ручка с внутренним управлением ZooKeeper.
Это описано здесь: http://curator.apache.org/errors.html