Я пытаюсь понять внутреннюю работу Apache ZooKeeper в ситуациях разделения мозга. Предположим, что существует кластер из 5 серверов: A, B, C, D и E, где A - лидер. Предположим теперь, что подкластер {A, B} отделен от подкластера {C, D, E}.
В этом случае субкластер {C, D, E} может выбрать нового лидера и добиться прогресса. С другой стороны, {A, B} не может добиться прогресса, поскольку большинство узлов не подтверждают обновления.
Мне интересно:
-
Что происходит со старым лидером A? Я ожидаю, что он потеряет лидерство, но как это происходит? Активный лидер периодически проверяет, есть ли у него большинство подписчиков?
-
Что происходит с клиентами, которые были подключены к A и B? Будет ли они автоматически перенаправляться на один из серверов, которые все еще могут добиться прогресса (C, D или E). Вернее, они застряли с A или B, пока раскол мозга не исцелится, и весь кластер повторно подключен?
Спасибо, Габриэль