Вы должны определить «большой» при упоминании тем Kafka:
- Большой означает огромные данные с точки зрения размера тома.
- Размер сообщения велик, так как для отправки сообщения требуется времяиз очереди в клиент для обработки?
- Интенсивная запись в эту тему?В таком случае нужно ли обрабатывать чтение максимально быстро?(то есть: можем ли мы отложить обработку данных примерно на 1 час)
- ...
В любом случае вам следует лучше подумать на стороне потребителя для лучшего дизайна темы и раздела,Например:
- Время обработки каждого сообщения медленное, и оно лучше обрабатывает между сообщениями: в этом случае вам нужно создать много разделов.Это похоже на балансировщик нагрузки и связь с сервером, вы создаете много рабочих для выполнения своей работы.
- Если обработка сообщений выполняется только для некоторых типов, время медленное, вам следует подумать о переходе на новую тему.Есть хорошая статья: Если вы поместите несколько типов событий в одну и ту же тему Кафки объясняет это решение.
- Важен ли порядок сообщений?например, сообщение A происходит перед сообщением B, сообщение A должно быть обработано в первую очередь.В этом случае вы должны отправлять все сообщения одного типа в один и тот же раздел (только один и тот же раздел может поддерживать порядок сообщений) или перемещаться в отдельную тему (с одним разделом).
- ...
После того, как вы правильно разработали тему и раздел, возникает вопрос: сколько разделов должно быть у вас для каждой темы.Увеличение общего количества разделов увеличит вашу пропускную способность, но в то же время это повлияет на доступность или задержку.Есть хорошая тема , как выбрать количество тем и разделов для кластера Kafka , в которой подробно объясняется, что общее количество разделов на тему влияет на производительность.На мой взгляд, вы должны провести эталонный тест непосредственно в вашей системе, чтобы выбрать правильное значение.Это зависит от многих факторов вашей системы: вычислительной мощности сервера, емкости сети, памяти ...
И, наконец, вам не нужно 100 серверов на 100 разделов.Кафка попытается сбалансировать все разделы между серверами, но это просто необязательно.Например, если у вас есть 1 раздел с 7 разделами, работающими на 3 серверах, на 2 серверах будет храниться по 2 раздела каждый, а на 1 сервере будет храниться 3 раздела.(так 2 * 2 + 3 * 1 = 7).В более новой версии Kafka отображение между разделом и информацией о сервере будет храниться на zookeeper.