46 lines
3.7 KiB
Markdown
46 lines
3.7 KiB
Markdown
|
# Лабораторная работа №3 - REST API, шлюз и синхронный обмен данными между микросервисами
|
|||
|
|
|||
|
## Задание
|
|||
|
|
|||
|
### Цель:
|
|||
|
Изучение принципов проектирования с использованием паттерна шлюза, организации синхронной передачи данных между микросервисами и применения архитектурного стиля RESTful API.
|
|||
|
|
|||
|
### Задачи:
|
|||
|
1. Создание двух микросервисов, которые реализуют операции CRUD для связанных сущностей.
|
|||
|
2. Реализация механизма синхронного обмена данными между микросервисами.
|
|||
|
3. Настройка шлюза на базе Nginx в качестве прозрачного прокси-сервера.
|
|||
|
|
|||
|
### Микросервисы:
|
|||
|
1. **books_service** — сервис, который управляет информацией о книгах.
|
|||
|
2. **subscriptions_service** — сервис, который обрабатывает данные об абонементах.
|
|||
|
|
|||
|
### Связь между микросервисами:
|
|||
|
- Один абонемент может быть связан с несколькими книгами. Взаимодействие между сервисами осуществляется через синхронные HTTP-запросы.
|
|||
|
|
|||
|
## Как запустить проект:
|
|||
|
|
|||
|
Для запуска приложения необходимо выполнить команду:
|
|||
|
|
|||
|
```bash
|
|||
|
docker-compose up --build
|
|||
|
```
|
|||
|
После этого проект будет доступен на следующих адресах:
|
|||
|
|
|||
|
Books Service: http://localhost:5000/books/
|
|||
|
Subscriptions Service: http://localhost:5001/subscriptions/
|
|||
|
## Описание работы:
|
|||
|
Для разработки микросервисов был выбран язык программирования Python, с использованием фреймворка Flask для реализации API.
|
|||
|
|
|||
|
## Синхронный обмен данными
|
|||
|
Сервис books_service обращается к subscriptions_service для получения информации о подписках, связанных с каждой книгой.
|
|||
|
Все запросы между сервисами выполняются синхронно с использованием HTTP-запросов, что позволяет обеспечить актуальность данных при выполнении операций CRUD.
|
|||
|
Docker Compose
|
|||
|
Конфигурационный файл docker-compose.yml представляет собой многоконтейнерное приложение, которое включает в себя три сервиса: books_service, subscriptions_service и nginx. С помощью Docker Compose можно удобно запустить все сервисы одновременно.
|
|||
|
|
|||
|
## Nginx
|
|||
|
Конфигурация Nginx настроена так, чтобы обрабатывать входящие HTTP-запросы и перенаправлять их на соответствующие сервисы. Это позволяет использовать один общий адрес для доступа к разным API-сервисам.
|
|||
|
|
|||
|
Nginx будет действовать как шлюз, который будет маршрутизировать запросы от пользователей в соответствующие микросервисы.
|
|||
|
|
|||
|
### Видео
|
|||
|
https://disk.yandex.ru/i/b12BECyaGmbqUQ
|