Предполагается, что существует эфемерный узел "Узел" с наблюдателем для его удаления. Когда сеанс Zookeeper истекает, одна из следующих последовательностей действий Zookeeper:
- Сначала удаляются наблюдатели, за которыми следует удаление эфемерного узла. Таким образом, наблюдение за удалением узла не будет запущено.
- Узел удаляется первым и запускается наблюдатель.
Из моих экспериментов с Zookeeper я обнаружил, что сценарий 1 верен, однако Мне не удалось найти подробности в документации.
Может ли кто-нибудь дать мне некоторое представление?
Выдержка из официальной документации
Срок действия сеанса регулируется самим кластером ZooKeeper, а не клиентом. Когда клиент ZK устанавливает сеанс с кластером, он предоставляет значение «тайм-аута», описанное выше. Это значение используется кластером, чтобы определить, когда истекает сеанс клиента. Истечение срока происходит, когда кластер не получает ответа от клиента в течение указанного периода тайм-аута сеанса (т. Е. Без пульса). По истечении сеанса кластер удалит любые / все эфемерные узлы, принадлежащие этому сеансу, и немедленно уведомит об изменении всех / всех подключенных клиентов (всех, кто наблюдает за этими узлами). В этот момент клиент просроченного сеанса все еще отключен от кластера, он не будет уведомлен об истечении срока действия сеанса до тех пор, пока / 1023 * не сможет повторно установить соединение с кластером. Клиент будет оставаться в отключенном состоянии до тех пор, пока TCP-соединение с кластером не будет восстановлено, после чего наблюдатель истекшего сеанса получит уведомление об истечении срока действия сеанса.
Ссылка: https://zookeeper.apache.org/doc/r3.3.5/zookeeperProgrammers.html#Ephemeral + Узлы