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