#apache-zookeeper
#apache-zookeeper
Вопрос:
Как показано на рисунке, у нас есть кластер zookeeper, состоящий из s1, s2 и s3, и два клиента zookeeper c1 и c2. c1 был подключен к s1, а c2 — к s3. Интересно, что произойдет с c2, если с s3 произойдет сбой сетевого раздела, что означает, что s3 не может подключиться к s1 и s2, но он все еще работает. c2 получит исключение или его сеанс будет перенесен на другой сервер?
Ответ №1:
Я не эксперт Zookeeper, но у меня также есть настройка 3-узлов, и я много читал об этом и проводил некоторые эксперименты с ним.
В Zookepeer есть настройки TickTime и syncLimit, которые определяют, как долго подписчики могут не синхронизироваться (если подписчики слишком сильно отстают от лидера, они будут удалены).
Я проводил эксперимент по отключению узла, к которому был подключен клиент. Я увидел исключение в журналах, а затем клиент повторно подключился к другому узлу.
Однако существует также параметр initLimit
, который определяет, сколько времени у клиента есть для установления соединения. Если в течение этого времени не удастся установить соединение, вы получите ConnectionLoss
исключение.
Комментарии:
1. Спасибо за ваш ответ. Но я думаю, вы немного неправильно поняли вопрос. Проблема с разделением сети не означает, что сервер s3 выходит из строя. только s3 не может взаимодействовать с s1 и s2, но он все еще работает, то есть c2 все еще имеет соединение с s3.
2. @James Да, именно поэтому я указал на параметры TickTime и syncLimit. Они определяют, как долго узел может быть несинхронизирован с Leader. Как только он не был синхронизирован с leader в течение определенного периода времени, он сам завершит работу (либо вашему клиенту удастся получить всю необходимую информацию за этот период времени, либо он сам после завершения работы узла повторно подключится к другому узлу).
3. Исправлюсь, узел, конечно, не будет «выключаться сам», но клиентское соединение с узлом должно быть прервано, и клиент попытается установить новое соединение.
4. да ~ Я понял вашу точку зрения ~ спасибо! Все еще не могу перестать думать о том, что произошло бы, если бы s3 был лидером. Я предполагаю, что это приведет к тому же.