В данном цикле статей мы рассмотрим систему работы с сообщениями – Apache Kafka.
При работе с большим количеством данных и высокой нагрузке мы имеем дело с 2 проблемами:
- Сбор и хранение данных
- Анализ имеющихся данных
Одним из способов преодоления этих сложностей мы можем использовать брокер сообщений.
Kafka была создана для работы с высоконагруженными распределёнными системами.
Благодаря высокой пропускной способности, встроенных репликации и парционированию, мы можем использовать её вместо стандартных брокеров сообщений.
Что же такое брокер сообщений в целом?
Это система, которая отвечает за обмен сообщениями между приложениями .Благодаря этому, само приложение может полностью сосредоточиться на данных, и не думать о том, как их передавать. Обычно, в основе брокеров лежит очередь сообщений, которая обрабатывается сложным алгоритмом. Сообщения передаются между приложением и брокером асинхронно.
Есть 2 вида брокеров:
- point-to-point
Сообщения хранятся в единой очереди и один или несколько потребителей (consumers) могут “брать” сообщения из очереди. При этом, 1 сообщение может быть прочитано только 1 потребителем. Сообщение удаляется из очереди. - publish-subscribe
Сообщения хранятся в так называемых топиках (темах). При данном подходе, получатели могут подписываться на один или несколько таких топиков и получать все сообщения в нём. Производитель, в этом случае, называется публикатор (publisher), а получатели подписчики (subscribers).
Kafka относится именно ко второму типу (publish-subscribe) брокеров сообщений. Сообщения в которой хранятся в дисковом пространстве и реплицируются в кластере во избежание потери данных. Kafka является надстройкой над сервером синхронизации под названием ZooKeeper.
Преимущества Apache Kafka:
- Производительность
Kafka имеет большую пропускную способность и способна обрабатывать терабайты сообщений - Надёжность
благодаря распределённости и репликации - Масштабируемость
Легко масштабируется без “простоя” по времени
Если подытожить, то можно сказать, что Kafka гарантирует быструю передачу больших объёмов данных без потерь данных и времени.
Чаще всего Kafka используетсядля обработки больших объёмов данных в режиме реального времени.
На этом мы заканчиваем наше введение.
В следующей статье мы рассмотрим архитектуру Apache Kafka.