forked from Alexey/DAS_2024_1
45 lines
2.8 KiB
Markdown
45 lines
2.8 KiB
Markdown
|
Лабораторная работа №3 - REST API, шлюз и синхронный обмен данными между микросервисами
|
|||
|
|
|||
|
Задание
|
|||
|
|
|||
|
Цель:
|
|||
|
Изучение принципов проектирования с использованием паттерна шлюза,
|
|||
|
организации синхронной передачи данных между микросервисами
|
|||
|
и применения архитектурного стиля RESTful API.
|
|||
|
|
|||
|
|
|||
|
Задачи:
|
|||
|
Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей.
|
|||
|
Реализация механизма синхронного обмена данными между микросервисами.
|
|||
|
Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера.
|
|||
|
Микросервисы:
|
|||
|
book_service — сервис, который управляет книгами.
|
|||
|
shelf_service — сервис, который обрабатывает данные о полках.
|
|||
|
Связь между микросервисами:
|
|||
|
Один документ (book) может иметь множество связанных предметов (shelf) (соотношение 1 ко многим).
|
|||
|
Как запустить проект:
|
|||
|
Для запуска приложения необходимо выполнить команду:
|
|||
|
|
|||
|
docker-compose up
|
|||
|
Описание работы:
|
|||
|
Для разработки микросервисов был выбран язык программирования Python.
|
|||
|
|
|||
|
Синхронный обмен данными
|
|||
|
Сервис book_service отправляет HTTP-запросы к shelf_service
|
|||
|
при выполнении определенных операций CRUD. Это позволяет получать актуальную информацию о книгах,
|
|||
|
связанных с конкретными полками.
|
|||
|
|
|||
|
Docker Compose
|
|||
|
Конфигурационный файл docker-compose.yml
|
|||
|
представляет собой многоконтейнерное приложение, которое включает в себя три сервиса:
|
|||
|
book_service, shelf_service и nginx. Функция маршрутизации возложена на сервер Nginx,
|
|||
|
который обрабатывает запросы и перенаправляет их на соответствующие микросервисы.
|
|||
|
|
|||
|
Nginx
|
|||
|
Конфигурационный файл Nginx определяет настройки веб-сервера и
|
|||
|
обратного прокси, который управляет входящими запросами
|
|||
|
и направляет их на соответствующие сервисы.
|
|||
|
|
|||
|
ВК
|
|||
|
|
|||
|
https://cloud.mail.ru/public/Aijk/T8myacqz5
|