Я только что начал с Apache Kafka и действительно попытаюсь выяснить, как я могу создать свою систему, чтобы использовать ее надлежащим образом.Apache kafka отправка сообщений и балансировка Загрузка
Я строю систему, которая обрабатывает данные, и фактически мой кусок данных - это задача (объект), которую необходимо обработать. И объект знает, как его можно обработать, так что это не проблема.
Моя система фактически разделена на 3 основных компонента: Издатель (код, который запускает задачи), транспорт - фактически кафка и набор Потребителей - на самом деле это рабочие, которые просто извлекают данные из очереди, обрабатывают их как-то. Важно отметить, что потребитель может быть самим издателем, если его задача требует двухэтапного вычисления (потребитель просто создает задачи и отправляет их обратно на транспорт)
Итак, мы можем начать с идеи, что у меня есть 3 сервера: 1 сингл корневой издатель (сервер kafka также работает там) и 2 сервера потребителей, которые фактически выполняют задачи. Рабочий процесс данных выглядит следующим образом: Publisher создаёт задачу, помещает ее в transposrt, а один из потребителей берет эту задачу из очереди и обрабатывает ее. И будет хорошо, если каждый потребитель будет обрабатывать те же самые задачи, что и другие (так что рабочая нагрузка распределяется между потребителями).
Какой шаблон конфигурации kafka мне нужно использовать для этого случая? У кафки есть некоторые функции балансировки сообщений, или мне нужно создать 2 раздела, и каждый потребитель будет привязан только к отдельным разделам и может потреблять данные только из этого раздела?
Где определить темуCount? – gillyb
В методе createMessageStreams задайте тему -> topicCount как карта. например, Map (topic1 -> 10). См. Ссылку http://kafka.apache.org/documentation.html#highlevelconsumerapi –