Руководство по Kafka. Введение.

В данном цикле статей мы рассмотрим систему работы с сообщениями – 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.