Полноценная демо-система для вебинара по Apache Kafka с React фронтендом для управления Producer и Consumer сервисами.
Система состоит из следующих компонентов:
- Kafka Broker - Apache Kafka 7.4.0
- Zookeeper - Координация кластера Kafka
- Schema Registry - Валидация схем сообщений
- Producer Service - Node.js сервис для отправки сообщений
- Consumer Service - Node.js сервис для потребления сообщений
- React Frontend - Веб-интерфейс для управления
- Kafka UI - Веб-интерфейс для мониторинга Kafka
# Запуск Kafka, Zookeeper, Schema Registry и Kafka UI
docker-compose up -d
Или используйте готовые скрипты:
Windows:
scripts\windows\start-docker-full.bat
Linux/macOS:
./scripts/linux-macos/start-docker-full.sh
Автоматическая установка (рекомендуется):
Windows:
scripts\windows\start-demo.bat
Linux/macOS:
./scripts/linux-macos/start-demo.sh
Ручная установка:
# Producer сервис
cd services/producer
npm install
# Consumer сервис
cd ../services/consumer
npm install
# React фронтенд
cd ../services/frontend
npm install
# Terminal 1: Producer сервис
cd services/producer
npm start
# Terminal 2: Consumer сервис
cd services/consumer
npm start
# Terminal 3: React фронтенд
cd services/frontend
npm start
-
React Dashboard: http://localhost:3000
-
Producer API: http://localhost:3001
-
Consumer API: http://localhost:3002
-
Kafka UI: http://localhost:8080
-
Schema Registry: http://localhost:8081
-
Kafka Broker: localhost:9092
- Откройте React Dashboard
- В разделе "Producer Service" нажмите "Create New Topic"
- Введите название топика
- Выберите топик из списка или введите новый
- Введите сообщение
- Опционально укажите ключ сообщения
- Нажмите "Send Message"
- В разделе "Consumer Service" введите названия топиков через запятую
- Нажмите "Start Consumer"
- Сообщения будут отображаться в реальном времени в разделе "Received Messages"
- Создание схемы: Используйте Schema Registry API для регистрации Avro схем
- Валидация: Настройте Producer для автоматической валидации сообщений по схеме
- Совместимость: Проверяйте совместимость версий схем при обновлении
- Мониторинг: Используйте Kafka UI для управления схемами
Подробные инструкции см. в SCHEMA_REGISTRY.md
# Переход в папку schemas
cd schemas
# Простой тест создания Avro схемы
./test-avro-schema.sh
# Создание полного набора схем
./create-schemas.sh
- Используйте Kafka UI для просмотра топиков, партиций и сообщений
- Schema Registry для управления схемами
- Kafka UI для удобного веб-интерфейса управления схемами
- Порт: 3001
- Kafka brokers: localhost:9092
- Автоматическое создание топиков включено
- Порт: 3002
- Kafka brokers: localhost:9092
- Group ID: demo-consumer-group
- WebSocket для real-time обновлений
- Брокер ID: 1
- Партиции: 1 (для демо)
- Replication Factor: 1 (для демо)
- Автосоздание топиков включено
kafka-demo/
├── README.md # Основная документация проекта
├── docker-compose.yml # Docker инфраструктура
├── scripts/ # Скрипты запуска по платформам
│ ├── windows/ # Windows batch файлы
│ │ ├── start-demo.bat # Основной скрипт запуска
│ │ ├── test-services.bat # Тестирование сервисов
│ │ └── start-docker-full.bat # Полный Docker стек
│ └── linux-macos/ # Unix/Linux/macOS shell скрипты
│ ├── start-demo.sh # Основной скрипт запуска
│ ├── test-services.sh # Тестирование сервисов
│ └── start-docker-full.sh # Полный Docker стек
├── services/ # Микросервисы
│ ├── producer/ # Producer сервис
│ │ ├── package.json
│ │ └── server.js
│ ├── consumer/ # Consumer сервис
│ │ ├── package.json
│ │ └── server.js
│ └── frontend/ # React приложение
│ ├── public/
│ ├── src/
│ │ ├── App.js
│ │ ├── App.css
│ │ ├── index.js
│ │ └── index.css
│ └── package.json
├── schemas/ # Schema Registry документация и скрипты
│ ├── README.md # Обзор Schema Registry
│ ├── QUICKSTART.md # Быстрый старт
│ ├── SCHEMA_REGISTRY.md # Полное руководство
│ ├── create-schemas.sh # Скрипт создания схем
│ ├── test-avro-schema.sh # Тест Avro схемы
│ └── INSTALL_JQ.md # Установка jq
└── readme/ # Дополнительная документация
├── QUICKSTART.md # Быстрый старт
├── LAUNCH.md # Инструкции по запуску
├── ARCHITECTURE_SIMPLE.md # Упрощенная архитектура
├── ARCHITECTURE_DIAGRAM.md # Детальная архитектура
├── TESTING.md # Руководство по тестированию
├── DOCKER_SETUP.md # Настройка Docker
├── NO_DOCKER_SETUP.md # Альтернатива без Docker
├── START_DOCKER.md # Запуск Docker Desktop
└── PROJECT_SUMMARY.md # Краткое описание проекта
scripts\windows\start-demo.bat
- Основной скрипт запускаscripts\windows\test-services.bat
- Тестирование сервисовscripts\windows\start-docker-full.bat
- Полный Docker стек
./scripts/linux-macos/start-demo.sh
- Основной скрипт запуска./scripts/linux-macos/test-services.sh
- Тестирование сервисов./scripts/linux-macos/start-docker-full.sh
- Полный Docker стек
# Producer с автоперезагрузкой
cd producer
npm run dev
# Consumer с автоперезагрузкой
cd consumer
npm run dev
# React с hot reload
cd frontend
npm start
# Просмотр логов Docker контейнеров
docker-compose logs -f
# Логи конкретного сервиса
docker-compose logs -f kafka
docker-compose logs -f schema-registry
# Producer
curl http://localhost:3001/health
# Consumer
curl http://localhost:3002/health
# Schema Registry
curl http://localhost:8081/subjects
curl -X POST http://localhost:3001/send-message \
-H "Content-Type: application/json" \
-d '{
"topic": "test-topic",
"message": "Hello Kafka!",
"key": "test-key"
}'
- Убедитесь, что Docker контейнеры запущены
- Проверьте логи:
docker-compose logs kafka
- Убедитесь, что порт 9092 доступен
- Проверьте подключение к Kafka
- Убедитесь, что топик существует
- Проверьте логи Producer сервиса
- Убедитесь, что Consumer запущен
- Проверьте подписку на правильные топики
- Проверьте Group ID
- Убедитесь, что Producer и Consumer сервисы запущены
- Проверьте CORS настройки
- Проверьте консоль браузера на ошибки
Для вопросов по демо-системе обращайтесь к автору вебинара.
Удачного изучения Apache Kafka! 🎉