Вы можете создать тему с 3 разделами и для каждого сообщения использовать разные ключи (один из emea
, apac
, nyc
), чтобы заставить сообщения размещаться в разделах в зависимости от расположения приложение. Кроме того, вы можете принудительно заставить экземпляры приложения отправлять сообщения в определенный раздел - например, экземпляр, запущенный в Нью-Йорке, будет отправлять сообщения в раздел 0 и т. Д.
Теперь, чтобы достичь этого, Средства репликации могут быть полезны. Когда в Kafka создается новая тема, вам нужно только определить количество разделов и коэффициент репликации, в то время как Kafka автоматически обрабатывает их распределение по кластеру. Вы можете форсировать это назначение, используя инструменты репликации;
2.2 Создание тем
Что делает инструмент?
По умолчанию Кафка автоматически создает тему, если для параметра "auto.create.topics.enable" установлено значение true на
сервер. Это создает тему с количеством разделов по умолчанию,
фактор репликации и использует схему по умолчанию Кафки, чтобы сделать реплику
назначение. Иногда может потребоваться, чтобы мы
настроить тему при создании. Этот инструмент помогает создать тему
а также укажите количество разделов, коэффициент репликации и
список назначений реплик для темы.
Как пользоваться инструментом?
# Create topic with default settings
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1
# Create topic with specific number of partitions and/or replicas
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replication-factor 3 --partitions 3
# Create topic with manual replica assignment
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2
# Create topic with configuration override
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --config min.insync.replicas=1
2.3 Добавление раздела в тему
Что делает инструмент?
В Кафке разделы выступают как единица параллелизма: сообщения одной темы
распределены по нескольким разделам, которые могут храниться и обслуживаться
разные серверы. При создании темы количество разделов
для этой темы должен быть указан. Позже может быть больше разделов
необходимо для этой темы, когда объем этой темы увеличивается. это
инструмент помогает добавить больше разделов для определенной темы, а также позволяет
ручное назначение реплики добавленных разделов.
Как пользоваться инструментом?
# Increase number of partitions for topic
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --partitions 4
# Increase number of partitions with specific replica assignment
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2,2:1:0 --partitions 4
Чтобы ответить на ваши вопросы сейчас;
1) Если для --replication-factor
установлено значение 1, вы сможете читать данные из брокера в Нью-Йорке, если вы определите хост этого брокера. Если вы установите --replication-factor
на 3, то вы сможете получать сообщения от любого из доступных брокеров.
2) При сбое брокера NYC лидером раздела становится другой брокер. Это автоматически обрабатывается Kafka :
Разделы журнала распределяются по серверам в
Кластер Kafka с каждым сервером, обрабатывающим данные и запросы на общий ресурс
из перегородок. Каждый раздел реплицируется через настраиваемый
количество серверов для отказоустойчивости.
Каждый раздел имеет один сервер, который выступает в качестве «лидера», и ноль или
больше серверов, которые действуют как «последователи». Лидер обрабатывает все прочитанное и
пишите запросы на раздел, пока подписчики пассивно
повторить лидера. Если лидер терпит неудачу, один из последователей будет
автоматически становиться новым лидером. Каждый сервер выступает в качестве лидера
некоторые из его разделов и подписчик для других, так что нагрузка хорошо
сбалансировано внутри кластера.