Skip to content

Tuns2000/Devops

Repository files navigation

Devops

Практическая работа №3.1: Микросервисы и Docker

Описание проекта

Этот проект демонстрирует работу двух взаимодействующих микросервисов с использованием Docker и Docker Compose:

  1. Generator (microservice1): Генерирует случайные числа и предоставляет их через REST API.
  2. 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

Подробные результаты проверки микросервисов

1. Проверка генератора случайных чисел (Generator)

Запрос:

curl http://localhost:5001/generate

Ответ:

{
  "number": 88,
  "service": "generator",
  "timestamp": 1758965590.4811666
}

Значения полей:

  • number: 88 — случайно сгенерированное число от 1 до 100
  • service: "generator" — идентификатор сервиса, обработавшего запрос
  • timestamp: 1758965590.4811666 — UNIX-время создания ответа

2. Проверка здоровья Generator

Запрос:

curl http://localhost:5001/health

Ответ:

{
  "service": "generator",
  "status": "ok"
}

Значения полей:

  • service: "generator" — идентификатор сервиса
  • status: "ok" — сервис работает нормально и готов обрабатывать запросы

3. Проверка обработки данных (Processor)

Запрос:

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" — идентификатор сервиса

4. Проверка здоровья Processor

Запрос:

curl http://localhost:5002/health

Ответ:

{
  "service": "processor",
  "status": "ok"
}

Значения полей:

  • service: "processor" — идентификатор сервиса
  • status: "ok" — сервис работает нормально и готов обрабатывать запросы

Как работает взаимодействие микросервисов

  1. При обращении к http://localhost:5002/process, сервис Processor делает внутренний запрос к Generator по адресу http://microservice1:5001/generate
  2. Generator генерирует случайное число и возвращает его Processor
  3. Processor сохраняет полученное число в своей внутренней коллекции (хранит до 10 последних чисел)
  4. Processor вычисляет статистические показатели на основе всех полученных чисел
  5. Результат статистики возвращается в ответе

API endpoints

Generator (порт 5001):

  • /generate - генерирует случайное число
  • /health - проверка работоспособности

Processor (порт 5002):

  • /process - получает число от Generator и вычисляет статистику
  • /health - проверка работоспособности

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

В PowerShell или командной строке:

curl http://localhost:5001/generate
curl http://localhost:5002/process

Или через любой HTTP-клиент (Postman, браузер и т.д.)

About

Задание 2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published