Как определить размер кластера Кафки

Я планирую решить, сколько узлов должно присутствовать в кластере Кафки. Я не уверен в параметрах, которые нужно учитывать. Я уверен, что он должен быть> = 3 (с коэффициентом репликации 2 и отказоустойчивостью 1 узла).

Может ли кто-нибудь сказать мне, какие параметры следует учитывать при определении размера кластера и как они влияют на размер.

Я знаю следующие факторы, но не знаю, как это количественно влияет на размер кластера. Я знаю, как это качественно влияет на размер кластера. Есть ли другой параметр, который влияет на размер кластера? 1. Replication factor (cluster size >= replication factor) 2. Node failure tolerance. (cluster size >= node-failure + 1)

Каким должен быть размер кластера для следующего сценария при рассмотрении всех параметров 1. There are 3 topics. 2. Each topic has messages of different size. Message size range is 10 to 500kb. Average message size being 50kb. 3. Each topic has different partitions. Partitions are 10, 100, 500 4. Retention period is 7 days 5. There are 100 million messages which gets posted every day for each topic. 1. There are 3 topics. 2. Each topic has messages of different size. Message size range is 10 to 500kb. Average message size being 50kb. 3. Each topic has different partitions. Partitions are 10, 100, 500 4. Retention period is 7 days 5. There are 100 million messages which gets posted every day for each topic.

Может кто-нибудь, пожалуйста, укажите мне соответствующую документацию или любой другой блог, который может обсудить это. Я искал его, но безрезультатно

Ответ 1

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

Пропускная способность Kafka должна быть линейно масштабируемой с количеством дисков, которые у вас есть. Новая функция нескольких каталогов данных, представленная в Kafka 0.8, позволяет разделам Kafka иметь разные разделы на разных машинах. По мере того, как число разделов значительно возрастает, возрастают и шансы на то, что процесс выборов лидера будет медленнее, что также повлияет на изменение баланса потребителей. Это то, что нужно учитывать, и может стать узким местом.

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

Будут и другие факторы. Например, размер fetch потребителя, сжатия, размер пакета для асинхронных производителей, размеры буфера сокета и т.д.

Аппаратное обеспечение и ОС также будут играть ключевую роль в этом, так как использование Kafka в среде на основе Linux целесообразно благодаря механизму pageCache для записи данных на диск. Подробнее об этом здесь

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

Еще один ресурс, который я считаю полезным копать

Ответ 2

Недавно я работал с кафкой, и это мои наблюдения.

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

Чтобы повысить надежность и отказоустойчивость, производятся повторы разделов, и они не увеличивают потребительский параллелизм. Правило большого пальца - это единственный брокер, который может разместить только одну копию на раздел. Следовательно, количество брокеров должно быть> = Нет реплик

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

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