Клиентский сеанс Zookeeper будет превышен по времени или будет перенесен на другой сервер? - PullRequest
0 голосов
/ 19 марта 2019

Как показано на рисунке, у нас есть кластер zookeeper, состоящий из s1, s2 и s3, и два клиента zookeeper c1 и c2.c1 был подключен к s1, а c2 к s3.Интересно, что случится с c2, если сетевой раздел случится с s3, что означает, что s3 не может подключиться к s1 и s2, но он все еще работает.c2 получит исключение или его сеанс будет перенесен на другой сервер?

pic

split-brain

1 Ответ

1 голос
/ 19 марта 2019

Я не эксперт по Zookeeper, но у меня также есть настройка на 3 узла, и я много читал об этом и проводил некоторые эксперименты с ним.

В Zookepeer есть настройки tickTime и syncLimit , которые определяют, как долго подписчики могут быть не синхронизированы (если подписчики слишком далеко отстают от лидера, они будут отброшены).

Я проводил эксперимент по отключению узла, к которому был подключен клиент. Я увидел исключение в журналах, а затем клиент снова подключился к другому узлу.

Однако есть также параметр initLimit, который определяет, сколько времени клиент должен установить соединение. Если не удается установить соединение в течение этого времени, вы получите ConnectionLoss исключение.

...