Apache Kafka

Главная страница
/
Пв3
/
Apache Kafka
Apache Kafka—распределенная потоковая платформа, позволяющая обрабатывать триллионы событий в день


Apache Kafka помогает организовать непрерывный обмен огромными потоками данных из различных источников без потерь данных.

  • Распределенность — отсутствие единой точки отказа за счет распределения данных и программных приложений по узлам кластера.
  • Горизонтальная масштабируемость — возможность добавления новых источников данных и узлов с различными характеристиками в единый вычислительный кластер.
  • Отказоустойчивость — сохранность сообщений обеспечивается архитектурой master-slave (ведущий-ведомый), механизмом реплицирования и синхронизацией реплик. Потеря сообщений возможна только в случае сбоя ведущего узла и отсутствия участвующих в синхронизации реплик, однако, даже в этом случае есть возможность восстановить смещение необработанного сообщения.
  • Высокая производительность — благодаря своей высокой пропускной способности, в Apache Kafka возможны чтение и запись более 1 миллиона событий в секунду.
  • Интегрируемость — реестр схем данных (Schema Registry) Apache Kafka позволяет работать с различными структурами и форматами представления информации, собственный бинарный протокол на базе TCP дает возможность эффективно взаимодействовать с другими популярными протоколами (REST, HTTP, XMPP, STOMP, AMQP, MQTT), а подключения к базам данных, файловым хранилищам, в т.ч. HDFS Apache Hadoop, и облачным сервисам хранения Big Data реализуются с помощью фреймворка Kafka Connect.
  • Долговечность — Apache Kafka гарантирует доставку сообщений путем их сохранения на диске и реплицирования по узлам кластера. Каждое сообщение Kafka хранит в журнале заданный период времени (дни, недели, месяцы) до тех пор, пока он не будет очищен. Частота очитки журнала зависит от объема данных и дискового пространства, а также схем обмена сообщениями.
  • Надежность — в Apache Kafka присутствует возможность уведомлений о получении сообщений для источников и отслеживание смещения чтения топика для получателей, а также различные стратегии отправки сообщений (строго однократная, как максимум однократная, периодическая, поочередная).
  • Достоверность — Apache Kafka сохраняет текущее и прежнее состояние системы, которое можно отследить благодаря механизму смещения в разделах топиков, что обеспечивает достоверность исторических больших данных.
  • Пакетирование сообщений при поточном режиме работы — благодаря разделению работы по разделам (partition), Кафка эффективно работает с пакетами со стороны получателя.
  • Безопасность — Apache Kafka предлагает несколько уровней изоляции для транзакций «чтение-обработка-запись». В транзакции могут участвовать сразу несколько топиков (topic) и разделов (partition). Отправитель (producer) начинает транзакцию, создаёт пакет сообщений, завершает транзакцию. Получатель (consumer) может читать сообщения в зависимости от своего уровня изоляции, но независимо от статуса транзакции (завершена, не завершена, отменена). Например, при уровне изоляции «чтение зафиксированного» получатель не видит сообщения, транзакции которых не завершены или отменены, из-за смещения в разделе до первой незавершенной транзакции (Last Stable Offset, LSO).