Масштабируемость системы Kafka обеспечивается несколькими механизмами, среди них:
- Параллельный запуск нескольких экземпляров производителей. 1 Каждый из них может независимо отправлять сообщения в кластер. 1 Производительность отправки данных растёт практически линейно с увеличением числа производителей, пока не будет достигнуто узкое место на уровне сети или дисковой подсистемы брокеров. 1
- Использование групп потребителей. 13 Если объём данных увеличивается, можно добавить новых потребителей в группу. 3 Kafka автоматически перераспределяет партиции между потребителями, обеспечивая равномерную нагрузку. 3
- Управление ресурсами. 1 Kafka позволяет настраивать квоты для ограничения скорости, с которой клиенты могут производить или потреблять данные. 1 Это защищает систему от чрезмерной нагрузки со стороны одного клиента и обеспечивает справедливое распределение ресурсов. 1
Надёжность системы Kafka обеспечивается, в частности, следующими механизмами:
- Репликация. 15 Каждая партиция может иметь несколько реплик, размещённых на разных брокерах. 1 Одна из реплик назначается лидером и обрабатывает все запросы на чтение и запись для данной партиции. 1 Остальные реплики (фолловеры) синхронизируются с лидером, постоянно копируя новые сообщения. 1 При выходе из строя брокера, содержащего лидера партиции, один из синхронизированных фолловеров автоматически повышается до статуса лидера, что обеспечивает непрерывность обслуживания. 1
- Механизм зеркалирования. 1 Он позволяет создавать асинхронную репликацию между географически распределёнными кластерами Kafka, обеспечивая катастрофоустойчивость. 1
- Концепция In-Sync Replicas (ISR). 1 Это набор реплик, которые успешно синхронизируются с лидером. 1 Концепция является ключевой для обеспечения баланса между доступностью и согласованностью данных. 1