Кафка брокерский приоритет - PullRequest
1 голос
/ 19 марта 2019

Если у меня есть глобальная конфигурация с экземплярами EMEA, APAC и NYC для конкретного приложения, я смотрю на региональных брокеров Kafka, которые все реплицируют из единой центральной темы, которую они все используют для ввода, а другую - для вывода данных.

Мне бы хотелось, чтобы каждый региональный экземпляр моего приложения связывался с брокером в своем регионе - поскольку приложение в Нью-Йорке, обращающееся к лондонскому брокеру, добавило бы большую задержку.

Есть ли способ сделать это с помощью конфигурации Kafka?Насколько я понимаю, если у вас есть три брокера в трех регионах с одной темой, один брокер будет основным, а остальные будут реплицированы.

1) Означает ли это, что я могу подключаться только к локальному посреднику и читать данные без необходимости использовать посредника в других регионах, независимо от того, является ли местный посредник лидером или реплицируется?

2) Для аварийного переключения, скажем, если брокер NYC выйдет из строя, я хотел бы, чтобы приложение могло затем использоваться в качестве вторичного курорта, попробуйте один из других регионов - хотя он захочет вернуться кместный регион, если он вернулся онлайн.Возможно ли это?

Большое спасибо

1 Ответ

0 голосов
/ 19 марта 2019

Вы можете создать тему с 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 с каждым сервером, обрабатывающим данные и запросы на общий ресурс из перегородок. Каждый раздел реплицируется через настраиваемый количество серверов для отказоустойчивости.

Каждый раздел имеет один сервер, который выступает в качестве «лидера», и ноль или больше серверов, которые действуют как «последователи». Лидер обрабатывает все прочитанное и пишите запросы на раздел, пока подписчики пассивно повторить лидера. Если лидер терпит неудачу, один из последователей будет автоматически становиться новым лидером. Каждый сервер выступает в качестве лидера некоторые из его разделов и подписчик для других, так что нагрузка хорошо сбалансировано внутри кластера.

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