Kafka
Что это
Kafka - это высокопроизводительная система обмена сообщениями для публикации-подписки, реализованная как
распределенная, разделенная, реплицированная служба журнала фиксации. ZooKeeper - для работы с Kafka необходим
координатор. Поэтому вначале стартуем ZooKeeper, затем сервер Kafka.
Для чего
- Проверка сообщения на ошибки
- Маршрутизация конкретному приемнику(ам)
- Разбиение сообщения на несколько маленьких, а затем агрегирование ответов приёмников и отправка результата источнику
- Сохранение сообщений в базе данных
- Вызов веб-сервисов
- Распространение сообщений подписчикам, если используются шаблоны типа издатель-подписчик
Преимущества
- Скорость - один брокер Kafka может обрабатывать сотни мегабайт от чтения и записи в секунду от тысяч
клиентов.
- Масштабируемость - kafka спроектирован таким образом, чтобы один кластер мог служить центральной базой
данных для крупной организации. Он может быть эластично и прозрачно расширен без простоя. Потоки данных
разделяются и распределяются по кластеру машин, чтобы потоки данных превышали возможности любой отдельной
машины и позволяли кластерам скоординированных потребителей.
- Долговечный - сообщения сохраняются на диске и реплицируются внутри кластера, чтобы предотвратить
потерю данных. Каждый брокер может обрабатывать терабайты сообщений без влияния на производительность.
- Распространяется по дизайну - kafka имеет современную кластер-ориентированную конструкцию, которая
обеспечивает надежную прочность и отказоустойчивость.
Setting
- log.retention.hours - время через сколько будут удаленны данные добавленные в kafka.
По умолчанию одна неделя.
- log.retention.minutes - время через сколько будут удаленны данные добавленные в kafka. По умолчанию
одна неделя.
- log.retention.ms - время через сколько будут удаленны данные добавленные в kafka. По умолчанию одна
неделя.
- log.retention.bytes - объем данный после которого будут удаленны данные добавленные в kafka.
По умолчанию 1 Gb. Значение -1 отключает ограничения.
- offsets.retention.minutes - время через которое kafka забудет какой офсет был брокером
Common kafka entities
- Kafka cluster - несколько Brokers Kafka под управлением ZooKeeper.
- Broker - одна единица Kafka.
- Producer - продюсер загружающий данные в kafka.
- Consumer - потребитель забирающий данные из kafka.
- Topic - раздел в Broker.
- Partition - раздел в Topic. Нет ограничение на количество, но он требует ресурсы и рекомендуется э
не больше 5000. Желательно иметь столько же consumers.
- Key - ключ по которому добавляются записи в Partition. Можно использовать его hash для выбора Partition или
в случае ошибки по ключу определить в каком offset ошибка.
- Value - значение, которое храниться по ключу.
- Consumer group - группы для нескольких consumers, которые будут отслеживаться kafka как один consumer.
- offset - ?
- Zookeeper - ?
Подключение
При первом запросе на kafka broker, всегда будет возвращаться список ip и ports всех kafka brokers в Kafka
cluster. Со второго вопроса начнется работа обмена данными.
Программы для мониторинга
- Kafka Tool
- KafkaCat