Что именно означает транзакция.state.log.min.isr? - PullRequest
0 голосов
/ 04 июля 2019

Во всех сценариях, если какой-либо брокер Kafka запущен и работает, мои производители и потребители должны работать правильно.

Параметры внутри server.properties ниже для высокой доступности кластера.

transaction.state.log.min.isr=2
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
  1. Если все 3 брокера Kafka (K1, K2 и K3) работают, кластер работает нормально.
  2. Если брокеры K1 и K2 выключаются, и работает только K3, кластер работает нормально.
  3. Если все серверы не работают и мы подключены к брокеру K1, кластер прекращает получать сообщения, и потребители также останавливаются.

Пожалуйста, дайте мне знать, если я что-то упустил, и что если я установлю transaction.state.log.min.isr=3?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019


transaction.state.log.min.isr делает переопределение конфигурации min.insync.replicas для темы транзакции - __transaction_state.
В основном это контролирует минимальный ISR для этой темы.

В упомянутом вами сценарии -

Если брокеры K1 и K2 не работают и только K3 работает, кластер работает нормально.

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

Например, вы используете коэффициент репликации 3 для темы под названием mycooltopic, а вашим брокерам присвоено значение min.insync.replicas из 2.
При создании в mycooltopicacks=all/-1) вам потребуется как минимум 2 реплики, которые должны подтвердить запись, прежде чем она будет считаться успешной записью.

Поэтому, если вы хотите изменить min.insync.replicas на 3 - вам нужно будет добавить больше брокеров в ваш кластер.

Подробнее о репликации Kafka можно прочитать в блоге Confluent - Репликация Kafka в режиме громкой связи и просмотреть официальную документацию (перейти к min.insync.replicas).

0 голосов
/ 04 июля 2019

action.state.log.min.isr - это просто выделенный файл min.insync.replicas, но для темы __transaction_state (внутренняя тема, созданная при запуске транзакций).Так что он просто переопределяет min.insync.replicas.

Возможно, вы уже знаете, но установка min.insync.replicas в 2 означает, что когда ваш продюсер (с acks = all) сгенерирует запись для определенноготеме, соответствующий брокер будет ждать, пока два других isr подтвердят запись.

Точно такое же поведение для транзакции .state.log.min.isr, но это будет применяться только к внутренней теме __transaction_state

Так что имеет смысл установить его на 2, когда у вас есть коэффициент репликации 3.

Но, не обязательно понять, что вы имели в виду:

Если все 3 брокера Кафки (K1,К2 и К3) Кластер работает нормально.==> действительно

Если брокеры K1 и K2 не работают и только K3 работает, кластер работает нормально.

==> вы не сможете произвести (с acks = all или> 1) новые записи в качестве коэффициента репликации не будут соблюдены.

Кроме того, вы не сможете создавать новые темы при создании / использовании (получит INVALID_REPLICATION_FACTOR)

ваш кластеропределенно не в порядке

Янник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...