3.1 KiB
Лабораторная работа №3 - REST API, шлюз и синхронный обмен данными между микросервисами
Задание
Цель
Изучение принципов проектирования с использованием паттерна шлюза, организации синхронной передачи данных между микросервисами и применения архитектурного стиля RESTful API.
Задачи
- Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей.
- Реализация механизма синхронного обмена данными между микросервисами.
- Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера.
Микросервисы
- user_service — сервис, который управляет информацией о пользователях.
- order_service — сервис, который обрабатывает данные о заказах пользователей.
Связь между микросервисами
- Один документ (user) может иметь множество связанных предметов (orders) (соотношение 1 ко многим).
Структура проекта
lab_3/
|-- nginx/
| |-- nginx.conf
|-- order_service/
| |-- Dockerfile
| |-- main.py
| |-- requirements.txt
|-- user_service/
| |-- Dockerfile
| |-- main.py
| |-- requirements.txt
|-- docker-compose.yml
Описание работы:
Для разработки микросервисов был выбран язык программирования Python.
Синхронный обмен данными
Сервис user_service
отправляет HTTP-запросы к order_service
при выполнении определенных операций CRUD. Это позволяет получать актуальную информацию о предметах, связанных с конкретными героями.
Docker Compose
Конфигурационный файл docker-compose.yml
представляет собой многоконтейнерное приложение, которое включает в себя три сервиса: user_service
, order_service
и nginx
. Функция маршрутизации возложена на сервер Nginx, который обрабатывает запросы и перенаправляет их на соответствующие микросервисы.
Nginx
Конфигурационный файл Nginx определяет настройки веб-сервера и обратного прокси, который управляет входящими запросами и направляет их на соответствующие сервисы.