Дизайн Kafka, реплицированные журналы, выборы лидера
Неясные выборы лидера: что, если они все не доступны? Обратите внимание, что гарантия Kafka в отношении потери данных основана на сохранении как минимум одной реплики в синхронизации. Если все узлы, реплицирующие раздел, умирают, эта гарантия больше не действует. Однако практическая система должна делать что-то разумное, когда все реплики умирают. Если вам не повезло, что это произошло, важно подумать о том, что произойдет. Можно реализовать два варианта поведения: Подождите, пока реплика в ISR вернется к жизни, и выберите эту реплику в качестве лидера (надеясь, что у нее все еще есть все данные). Выберите первую реплику (не обязательно в ISR), которая вернется к жизни в качестве лидера. Это простой компромисс между доступностью и согласованностью. Если мы будем ждать реплик в ISR, мы останемся недоступными, пока эти реплики не работают. Если такие реплики были уничтожены или их данные были потеряны, то мы навсегда отключились. С другой стороны, если несинхронизированная реплика