Тема Kafka vs тема раздела

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

Если вместо разделения создается несколько тем, это влияет на эффективность работы.


person Anil    schedule 07.01.2015    source источник


Ответы (1)


Из документации kafka

Разделы журнала служат нескольким целям. Во-первых, они позволяют журналу масштабироваться за пределы размера, который уместится на одном сервере. Каждый отдельный раздел должен соответствовать серверам, на которых он размещен, но тема может иметь много разделов, поэтому она может обрабатывать произвольный объем данных.

Наличие нескольких разделов для любой заданной темы позволяет Kafka распределять ее по кластеру Kafka. В результате запрос на обработку данных из разных разделов может быть разделен между несколькими серверами всего кластера. Также каждый раздел можно реплицировать на несколько серверов, чтобы минимизировать потерю данных. Снова со страницы документа

Разделы журнала распределяются по серверам в кластере Kafka, и каждый сервер обрабатывает данные и запросы на долю разделов. Каждый раздел реплицируется на настраиваемое количество серверов для обеспечения отказоустойчивости.

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

Я не думаю, что создание нескольких тем вместо разделов сильно повлияет на общую производительность. Но представьте, что вы хотите отслеживать все твиты, сделанные пользователями на вашем сайте. Затем у вас может быть одна тема с именем «User_tweet» с несколькими разделами, чтобы при создании сообщений Kafka мог распределять данные по нескольким разделам, а на стороне потребителя вам нужно, чтобы одна группа потребителей извлекала данные из одной и той же темы. Вместо этого сохранение «User_tweet_1», «User_tweet_2», «User_tweet_3» только усложнит вам задачу при создании и использовании сообщений.

person user2720864    schedule 07.01.2015