Apache Kafka

Основные отличия Apache Kafka от традиционных систем обмена сообщениями:

  • Apache Kafka – распределенная система, поэтому она приспособлена к масштабированию
  • Высокая производительность как в случае публикации сообщений, так и в случае подписки на них
  • Apache Kafka сохраняет сообщения на диске, поэтому может использоваться для пакетной передачи данных (например, для ETL-процессов: извлечение, трансформация и загрузка данных)

Компоненты архитектуры Apache Kafka:

  1. Поток сообщений определенного типа называется темой (Topic). Сообщение – это полезный для происходящего процесса комплект данных, а тема – это категория, в соответствии с которой публикуется то или иное сообщение.
  2. Производитель (Producer) – это любой процесс, публикующий сообщения в соответствующей теме.
  3. Опубликованные сообщения отправляются на хранение на кластер серверов (brokers или кластеры Apache Kafka). Брокер – это диспетчер очереди, которая принимает и отдает сообщения между отдельными приложениями внутри системы, где приложения должны пересылать данные друг другу.
  4. Потребитель (Consumer) может подписаться на одну или несколько тем и использовать сообщения, забирая данные от брокеров.

Поскольку Apache Kafka является распределенной системой, то кластер состоит из нескольких брокеров, а каждый брокер отвечает за хранение одной или нескольких секций. Это дает возможность множеству производителей и потребителей публиковать и использовать сообщения для своих целей одновременно.

Преимущества Apache Kafka:

  • Aрхитектура Apache Kafka позволяет потребителям самим регулировать скорость, с которой они будут получать данные, а в случае отказа системы или другой нестандартной ситуации, потребитель всегда имеет возможность получить сообщение повторно.
  • Apache Kafka полностью интегрирована со службой ZooKeeper, которая обладает всей необходимой функциональностью для обеспечения безопасности данных и отказоустойчивости.