2

я узнал от http://engineering.linkedin.com/kafka/intra-cluster-replication-apache-kafkaКак KafKa гарантирует согласованность и доступность?

Наша цель состояла в том, чтобы поддерживать репликацию в кластере Кафки в одном центре обработки данных, где сеть разделения редка

В распределенной системе, я думаю, что «Разметка» является основным , поэтому я не знаю, что Kafka гарантирует доступность без раздела, когда только серверный узел вышел из строя. Или я что-то пропустил

ответ

5

Я думаю, вы можете ввести в заблуждение ощущение «разделения» на сетевые разделы.

Kafka действительно обеспечивает шрамы и репликацию. Кафка выбирает уникального лидера для каждого раздела каждой темы. Все записи для раздела темы проходят через лидера. Это относится к документации, которую вы указали, с указанием доступности услуги Kafka в отношении допуска к разделению.

Что подразумевается под сетевыми разделами - это разрыв связи между серверами. Сбой сетевой коммуникации в локальной сети реже, чем в глобальной сети, поэтому Kafka был сконструирован таким образом, чтобы обеспечить согласованность, за исключением случаев, когда происходит разделение сети. В случае сетевого раздела копии Kafka могут расходиться друг от друга, причем узлы с обеих сторон раздела потенциально могут принимать записи. Причина, по которой это может произойти, состоит в том, что, когда происходит сетевой раздел, узлы с каждой стороны раздела могут воспринимать узлы на другой стороне раздела как потерпевшие неудачу, когда на самом деле связь между ними только не удалась. Это означает, что каждая сторона сетевого раздела может выбрать нового лидера для некоторых разделов раздела, поэтому это означает, что каждая сторона сетевого раздела может принимать записи для некоторых разделов темы. Как только сетевой раздел исцеляется (сеть исправлена), записи, сделанные с одной стороны раздела, могут перезаписывать записи, сделанные на другой стороне раздела.

+0

Спасибо за ваш повтор, kuujo, я приведу из вашего ответа, например, две стороны сети (сторона a, сторона b), когда тема x сделала три раздела на одной стороне сети (p1 находится сбоку a, p2, p3 находится в стороне b), а p1 является лидером этой темы. поэтому, когда сеть между стороной а и стороной b сломана, p2, p3 должны выбрать лидера в стороне b для темы, а p1 все еще является лидером на стороне a для темы. Таким образом, для этой темы произошло две записи, и согласованность не гарантируется. Это правильно? – regrecall

Смежные вопросы