Кафка высокого уровня против потребителя низкого уровня

У меня есть следующие вопросы по темам и разделам

1) В чем разница между n-темами с m-разделами и nm темами? Будет ли разница при доступе к m-разделам через m потоков и nm тем с использованием n*m разных процессов

2) Идеальный вариант использования, отличающий потребителей высокого и низкого уровня.

3) В случае сбоя (т.е.) сообщение не доставлено, где я могу найти журналы ошибок в Kafka.


person Muruga    schedule 21.10.2014    source источник


Ответы (1)


1) В чем разница между n-темами с m-разделами и nm-темами?

Для каждой темы должен быть хотя бы один раздел. Тема — это просто именованная группа разделов, а разделы — это на самом деле потоки данных. Код, который использует производителя Kafka, обычно не связан с разделами, он просто отправляет сообщение в тему. По умолчанию производитель использует подход циклического перебора для выбора раздела для хранения сообщения, но при необходимости вы можете создать собственный раздел и выбрать раздел на основе содержимого сообщения.

Если имеется только один раздел, только один посредник обрабатывает сообщения для темы и добавляет их в файл. С другой стороны, если разделов столько же, сколько и брокеров, обработка сообщений распараллеливается и ускорение может достигать m раз (за вычетом накладных расходов). Это предполагает, что каждый брокер работает на своем собственном компьютере, а хранилище данных kafka не используется совместно между брокерами.

Если разделов для топика больше, чем брокеров, Kafka пытается распределить их поровну между всеми брокерами.

То же самое относится и к чтению Кафки. Если есть только один раздел, скорость потребителя kafka ограничена максимальной скоростью чтения одного диска. При наличии нескольких разделов сообщения из всех разделов (на разных брокерах) извлекаются параллельно.

1a) Будет ли разница при доступе к m-разделам через m потоков и nm тем с использованием n*m разных процессов

Вы смешиваете здесь разделы и темы, см. мой ответ выше.

2) Идеальный вариант использования, отличающий потребителей высокого и низкого уровня.

Потребитель высокого уровня: я просто хочу использовать Kafka в качестве чрезвычайно быстрого постоянного буфера FIFO и не сильно беспокоиться о деталях.

Потребитель низкого уровня: я хочу иметь пользовательскую логику использования данных раздела, например. начать чтение данных из вновь созданных тем без необходимости повторного подключения потребителей к брокерам.

3) В случае сбоя (т.е.) сообщение не доставлено, где я могу найти журналы ошибок в Kafka.

Kafka использует log4j для ведения журнала. Это зависит от его конфигурации, где хранится журнал (в случае производителя и потребителя). Журналы брокера Kafka обычно хранятся в /var/log/kafka/.

person Denis Makarenko    schedule 23.10.2014
comment
Хорошее объяснение ... легко понять для начинающих. - person Mitesh Sharma; 17.02.2016