Skip to content

MustafaevAlim/ImageProcessor

Repository files navigation

ImageProcessor

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

Описание

ImageProcessor — асинхронная система обработки изображений, построенная на микросервисной архитектуре. Сервис решает задачу быстрой и масштабируемой обработки пользовательских изображений без блокировки основного потока запросов. Используется в сценариях, где требуется создание множественных версий изображений: соцсети, маркетплейсы, фотогалереи, блоги и визуальные редакторы.

Ключевые возможности

  • Асинхронная обработка изображений через очередь Kafka
  • REST API для загрузки, получения и удаления изображений
  • Простой веб-интерфейс для управления изображениями
  • Отслеживание статуса обработки в реальном времени

Архитектура

Проект использует следующий стек технологий:

  • Backend: Golang с Gin
  • Message Broker: Apache Kafka для очереди задач обработки
  • Database: PostgreSQL для хранения метаданных и статусов обработки
  • Object Storage: MinIO с публичным бакетом для хранения изображений
  • Reverse Proxy: Nginx для проксирования API и статических файлов
  • Frontend: HTML + JavaScript

Схема взаимодействия компонентов

  1. Пользователь загружает изображение через веб-интерфейс
  2. Backend сохраняет исходное изображение в MinIO и создает запись в PostgreSQL
  3. Задача на обработку отправляется в очередь Kafka
  4. Consumer забирает задачу из Kafka и обрабатывает изображение
  5. Обработанное изображение сохраняется в MinIO, статус обновляется в PostgreSQL
  6. Nginx проксирует запросы к API (/api/*) на backend и раздает изображения из MinIO

Запуск

Создать файл .env по примеру .env.example, запустить команду:

sudo docker-compose up -d

Бд поднимается отдельном контейнере

API

HTTP методы:

  • POST /upload - загрузка изображения на обработку
  • GET /image/{id} - получение обработанного изображения
  • DELETE /image/{id} - удаление изображения
  • GET /images?last_created_at=&last_id=&mode= - получение изображений с пагинацией

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages