Почему это не получается? Узлы n1 и n2 все еще работают и при условии, что у topi c есть replication-factor=3
, все данные все еще должны быть доступны.
Я бы сказал, что это зависит. Репликация тем на всех узлах не повредит, но иногда это избыточно (особенно, когда в кластере очень много брокеров). Для высокой доступности вы должны установить как минимум replication-factor=3
. Это позволяет, например, демонтировать одного брокера для обслуживания, а другой неожиданно обанкротиться.
bootstrap.servers
используется для настройки соединения кластера Kafka. Как правило, одного адреса достаточно для доступа ко всему кластеру, но всегда лучше указывать все адреса в случае, если один из серверов не работает. Обратите внимание, что клиенты (производители или потребители) используют всех брокеров независимо от того, какие серверы указаны в bootstrap.servers
.
Пример 2 тем (каждая с 3 и 2 разделами соответственно):
Брокер 1:
+-------------------+
| Topic 1 |
| Partition 0 |
| |
| |
| Topic 2 |
| Partition 1 |
+-------------------+
Брокер 2:
+-------------------+
| Topic 1 |
| Partition 2 |
| |
| |
| Topic 2 |
| Partition 0 |
+-------------------+
Брокер 3:
+-------------------+
| Topic 1 |
| Partition 1 |
| |
| |
| |
| |
+-------------------+
Обратите внимание, что данные распространяются (и Брокер 3 не содержит данных topi c 2 ).
Темы должны иметь replication-factor
> 1 (обычно 2 или 3), чтобы при брокер не работает, другой может обслуживать данные топи c. Например, предположим, что у нас есть топи c с 2 разделами с replication-factor
, установленным на 2, как показано ниже:
Брокер 1:
+-------------------+
| Topic 1 |
| Partition 0 |
| |
| |
| |
| |
+-------------------+
Брокер 2:
+-------------------+
| Topic 1 |
| Partition 0 |
| |
| |
| Topic 1 |
| Partition 0 |
+-------------------+
Брокер 3:
+-------------------+
| Topic 1 |
| Partition 1 |
| |
| |
| |
| |
+-------------------+
Теперь предположим, что Брокер 2 не удалось , Брокер 1 и 3 по-прежнему могут обслуживать данные для topi c 1. Таким образом, replication-factor
из 3 - это всегда хорошая идея, поскольку он позволяет снять одного брокера в целях обслуживания, а также для еще один неожиданно снесут. Следовательно, Apache -Kafka предлагает надежные гарантии надежности и отказоустойчивости.
Примечание о лидерах: В любое время только один брокер может быть лидером раздела, и только этот лидер может получать и обслуживать данные для этого раздела. Остальные брокеры просто синхронизируют данные (синхронные реплики c). Также обратите внимание, что когда replication-factor
установлен в 1, лидер не может быть перемещен в другое место в случае сбоя брокера. В общем случае, когда все реплики раздела выходят из строя или go отключены, leader
будет автоматически установлен на -1
.