Этот проект демонстрирует работу двух взаимодействующих микросервисов с использованием Docker и Docker Compose:
- Generator (microservice1): Генерирует случайные числа и предоставляет их через REST API.
- Processor (microservice2): Получает данные от Generator и вычисляет статистические показатели.
project/
│
├── microservice1/ # Сервис генерации случайных чисел
│ ├── app.py # Код микросервиса
│ ├── requirements.txt # Зависимости Python
│ └── Dockerfile # Инструкции сборки образа
│
├── microservice2/ # Сервис обработки данных
│ ├── app.py # Код микросервиса
│ ├── requirements.txt # Зависимости Python
│ └── Dockerfile # Инструкции сборки образа
│
└── docker-compose.yml # Конфигурация Docker Compose
Для запуска микросервисов выполните следующую команду:
docker-compose up --build
Запрос:
curl http://localhost:5001/generate
Ответ:
{
"number": 88,
"service": "generator",
"timestamp": 1758965590.4811666
}
Значения полей:
number
: 88 — случайно сгенерированное число от 1 до 100service
: "generator" — идентификатор сервиса, обработавшего запросtimestamp
: 1758965590.4811666 — UNIX-время создания ответа
Запрос:
curl http://localhost:5001/health
Ответ:
{
"service": "generator",
"status": "ok"
}
Значения полей:
service
: "generator" — идентификатор сервисаstatus
: "ok" — сервис работает нормально и готов обрабатывать запросы
Запрос:
curl http://localhost:5002/process
Ответ:
{
"count": 2,
"max": 12,
"mean": 7.5,
"min": 3,
"received_number": 3,
"service": "processor"
}
Значения полей:
count
: 2 — количество обработанных чисел (в буфере хранятся последние 10 чисел)max
: 12 — максимальное значение из всех полученных чиселmean
: 7.5 — среднее арифметическое всех чисел ((12+3)/2 = 7.5)min
: 3 — минимальное значение из всех полученных чиселreceived_number
: 3 — последнее полученное от Generator числоservice
: "processor" — идентификатор сервиса
Запрос:
curl http://localhost:5002/health
Ответ:
{
"service": "processor",
"status": "ok"
}
Значения полей:
service
: "processor" — идентификатор сервисаstatus
: "ok" — сервис работает нормально и готов обрабатывать запросы
- При обращении к
http://localhost:5002/process
, сервис Processor делает внутренний запрос к Generator по адресуhttp://microservice1:5001/generate
- Generator генерирует случайное число и возвращает его Processor
- Processor сохраняет полученное число в своей внутренней коллекции (хранит до 10 последних чисел)
- Processor вычисляет статистические показатели на основе всех полученных чисел
- Результат статистики возвращается в ответе
Generator (порт 5001):
/generate
- генерирует случайное число/health
- проверка работоспособности
Processor (порт 5002):
/process
- получает число от Generator и вычисляет статистику/health
- проверка работоспособности
В PowerShell или командной строке:
curl http://localhost:5001/generate
curl http://localhost:5002/process
Или через любой HTTP-клиент (Postman, браузер и т.д.)