Я предполагаю, что ваши центры обработки данных, которые "не очень далеко друг от друга", в основном являются зонами доступности (AZ).
Распространено кластеризация по нескольким AZ.Однако, как правило, нежелательно или невозможно, чтобы каждый «кусочек» мог жить сам по себе.
Непосредственной проблемой является Zookeeper, который по своей конструкции предотвращает сценарии с разделением мозга.Таким образом, если ZK-кластер разделен, то будет работать только один «срез» (в лучшем случае).Таким образом, брокеры, которые находятся на стороне неработающих кластеров ZK, будут не функционировать.
Тогда, скажем, можно было заставить обе стороны продолжать работать.Что происходит, когда вы снова присоединяетесь к обеим сторонам?
Данные, вероятно, расходятся, поскольку клиенты записывают данные каждой стороне отдельно.Теперь у вас может быть один и тот же раздел с разными сообщениями для одного и того же смещения, и нет способа разрешить конфликт, поскольку оба параметра являются «действительными».
Я надеюсь, что это показывает, почему это не является возможным решением.На практике, если AZ отключается, он не функционирует до тех пор, пока не будет переведен обратно в оперативный режим.
Клиенты, которые были подключены к автономному AZ, должны повторно подключиться к другому AZ (используя несколько серверов начальной загрузки) и клиентам, которые былив отказавшем АЗ следует выполнить повторную инициализацию в другой.
При правильной настройке Кафка может пережить сбой АЗ (хотя на практике лучше иметь 3 АЗ) и сохранять все ресурсы доступными.Также в этом сценарии кластер автоматически вернется в хорошее состояние, когда завершится сбой AZ.