2015-09-15 3 views
0

Чтобы разделить мои данные на основе ключа: Должен ли я использовать несколько тем или несколько разделов внутри одной и той же темы? Я спрашиваю на основе накладных расходов, вычислений, хранения данных и нагрузки, вызванной на сервере.Parallelism at Kafka Темы или разделы Уровень

ответ

0

Я бы рекомендовал разделить ваши данные на несколько разделов в одной и той же теме. Я предполагаю, что данные логически принадлежат вместе (например, поток событий щелчка). Преимущество разделения ваших данных с использованием нескольких разделов в рамках одной и той же темы в основном состоит в том, что все API-интерфейсы Kafka реализованы таким образом.

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

0

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

В Кафке основным уровнем параллелизма является количество разделов в теме, потому что, чтобы вы могли создать много экземпляров-потребителей, чтобы параллельно считывать данные из одной и той же темы.

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

С другой стороны, сохраняя записи в пределах той же теме в отдельном разделе будет сделать это намного проще для реализации и потребления сообщений в порядке (Кафка только обеспечивает общий порядок над сообщениями внутри раздела, а не между различными разделами в теме.). Но в этом случае вы будете ограничены только одним потребительским процессом.

Смежные вопросы