Apache Kafka — это распределенное хранилище данных, которое оптимально подходит для приема и обработки потоковых сообщений в режиме реального времени. Платформа может последовательно и поэтапно справляться с информацией, поступающей из тысяч источников. В статье расскажем, как это работает и кому может быть полезным.
Что такое Apache Kafka
Данная платформа применяется для создания конвейеров потоковой передачи данных в реальном времени и приложений, которые адаптируются к потокам данных. В ней объединены обмен сообщениями, хранение и потоковая обработка информации. Благодаря этому можно хранить и анализировать как старые данные, так и те, что поступают в реальном времени.
Kafka даёт пользователям три основные функции:
- Публиковать и подписываться на потоки записей
- Эффективно хранить потоки записей в порядке их создания
- Обрабатывать потоки записей в режиме реального времени
Как работает Kafka?
В Kafka сочетаются две модели обмена сообщениями: очередь и публикация-подписка. Таким образом потребителям получают преимущества обеих. Благодаря очереди обработка данных распределяется по множеству потребителей, а это ведёт к высокой масштабируемости. Но в отличие от традиционных очередей (не многоабонентским), модель «публикация-подписка» позволяет работать с множеством подписчиков.
Метод «публикация-подписка» предусматривает несколько подписчиков, но так как сообщение отправляется каждому подписчику, он не подходит для организации работы между разными рабочими процессами. В Kafka применяется модель поделенного на секции журнала, благодаря чему можно объединить оба решения.
Журнал – это упорядоченная последовательность записей. Сам журнал разбит на сегменты или разделы, которые соответствуют разным подписчикам. То есть на одну и ту же тему может быть несколько подписчиков, и каждому назначается раздел, что даёт возможности для масштабируемости.
Преимущества Apache Kafka
- Масштабируемость. Модель разделенного журнала Kafka позволяет распределять данные по нескольким серверам, что делает их масштабируемыми, в отличие от модели размещения на одном сервере.
- Скорость. Kafka разделяет потоки данных, поэтому задержки минимальны.
- Надёжность. Разделы распределяются и реплицируются на множество серверов, а все данные записываются на диск. Это помогает защититься от сбоев сервера, позволяя добиться высокой надёжности и отказоустойчивости.
Зачем использовать Apache Kafka
Данная система отлично подходит для задач, в рамках которых требуется собирать, хранить и обрабатывать большие неструктурированные данные. Например, это могут быть платформы, аккумулирующие данные из множества источников, сервисы, которые занимаются стриминговой аналитикой.
Изначально Apache Kafka была разработана под собственные цели LinkedIn, а именно, обмена данными между службами, создания бэкапов, потоковой передачи информации о деятельности приложений. Для других организаций она может стать средством обмена сообщениями между микросервисами, обрабатывать потоковые данные, перемещать Big data из одного источника в другой.
В сфере Интернета вещей, Kafka также может быть незаменима. Платформы IoT собирают огромное количество данных с разных устройств, и северы получают возможность обрабатывать их в реальном времени.
Таким образом Apache Kafka может оказаться полезной практически в любой отрасли от транспортной сферы до разработки программного обеспечения.