Сообщения в Crashed Kafka Broker - PullRequest
0 голосов
/ 26 июня 2018

Что происходит с сообщениями, которые успешно записываются в раздел лидера на Kafka Broker 1, и Broker 1 вылетает и появляется позже?

1 Ответ

0 голосов
/ 26 июня 2018

Если он успешно записан, то всякий раз, когда работает брокер, любой потребитель, подписавшийся на эту тему, может использовать сообщения.Процитируем официальный документ:

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

Если у вас несколько брокеров, лидеры разделов равномерно распределяются между брокерами.Больше из документов:

Теперь мы можем более точно определить, что сообщение считается зафиксированным, когда все синхронизирующие реплики для этого раздела применили его к своему журналу.Только подтвержденные сообщения всегда выдаются потребителю.Это означает, что потребителю не нужно беспокоиться о возможности увидеть сообщение, которое может быть потеряно в случае неудачи лидера.Производители, с другой стороны, имеют возможность либо ждать принятия сообщения, либо нет, в зависимости от того, предпочитают ли они компромисс между задержкой и долговечностью.Это предпочтение контролируется настройкой acks, которую использует производитель.Обратите внимание, что в темах есть настройка для «минимального количества» синхронных реплик, которое проверяется, когда производитель запрашивает подтверждение того, что сообщение было записано в полный набор синхронных реплик.Если производитель запрашивает менее строгое подтверждение, то сообщение может быть зафиксировано и использовано, даже если количество синхронизированных реплик меньше минимального (например, оно может быть таким же низким, как и у лидера).

Гарантия, которую предлагает Кафка, состоит в том, что зафиксированное сообщение не будет потеряно, если в реплике всегда есть хотя бы одна живая реплика.

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

Чтобы понять, как работает репликация в Kafka, посетите эту документацию.

...