Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Node.js: Apache Kafka, event streaming, message broker, distributed system, publish-subscribe

Что такое Apache Kafka?

Вопрос проверяет понимание Apache Kafka как распределенной платформы для потоковой передачи данных, используемой для построения конвейеров данных и приложений реального времени.

Короткий ответ

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

Длинный ответ

Что такое Apache Kafka?

Apache Kafka — это распределенная платформа для потоковой передачи событий (event streaming). Она позволяет публиковать, хранить и обрабатывать потоки данных в реальном времени. В отличие от традиционных брокеров сообщений (например, RabbitMQ), Kafka спроектирована для высокой пропускной способности, отказоустойчивости и долговременного хранения данных.

Основные концепции

  • Producer — приложение, которое отправляет сообщения (события) в Kafka.
  • Consumer — приложение, которое читает сообщения из Kafka.
  • Topic — категория или канал, куда публикуются сообщения.
  • Partition — topic разбивается на партиции для параллельной обработки и масштабирования.
  • Broker — сервер Kafka, который хранит данные и обслуживает запросы.
  • Offset — уникальный идентификатор сообщения внутри партиции.

Пример использования

Предположим, у нас есть микросервис заказов, который должен уведомлять другие сервисы о новых заказах. Вместо прямой интеграции каждый сервис подписывается на topic orders.

// Producer на Node.js
const { Kafka } = require('kafkajs');

const kafka = new Kafka({ clientId: 'order-service', brokers: ['localhost:9092'] });
const producer = kafka.producer();

async function sendOrder(order) {
  await producer.connect();
  await producer.send({
    topic: 'orders',
    messages: [{ value: JSON.stringify(order) }],
  });
  await producer.disconnect();
}

sendOrder({ id: 1, item: 'laptop', amount: 1500 });
// Consumer на Node.js
const { Kafka } = require('kafkajs');

const kafka = new Kafka({ clientId: 'notification-service', brokers: ['localhost:9092'] });
const consumer = kafka.consumer({ groupId: 'notification-group' });

async function consumeOrders() {
  await consumer.connect();
  await consumer.subscribe({ topic: 'orders', fromBeginning: true });
  await consumer.run({
    eachMessage: async ({ topic, partition, message }) => {
      console.log('New order:', message.value.toString());
      // Отправляем email или SMS
    },
  });
}

consumeOrders();

Где применяется

  • Логирование и мониторинг (сбор логов с множества сервисов).
  • Обработка событий в реальном времени (например, аналитика кликов).
  • Построение конвейеров данных между базами данных и аналитическими системами.
  • Микросервисная архитектура для асинхронной коммуникации.

Вывод: Apache Kafka — это мощный инструмент для создания масштабируемых, отказоустойчивых систем, где важна надежная передача и долговременное хранение потоков данных. Его стоит применять, когда требуется высокая пропускная способность, гарантии доставки и возможность повторного чтения сообщений.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Node.js

    Node.js

  • Kafka

    Kafka

Ключевые слова

#Apache Kafka

#event streaming

#message broker

#distributed system

#publish-subscribe

Подпишись на Java Developer в телеграм