DAS_2023_1/volkov_rafael_lab_3/README.md
2023-12-25 21:49:32 +04:00

157 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
Задачи:
Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
Реализовать механизм синхронного обмена сообщениями между микросервисами.
Реализовать шлюз на основе прозрачного прокси-сервера nginx.
# Создание микросервисов
1-й микросервис - football-portal-application для сущности Портал футбольной тематики
2-й микросервис - football-team-application для сущности Футбольная команда
Сущность: Футбольная команда (Football Team):
УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретную футбольную команду.
Название (Name): Название футбольной команды.
Год основания (Established Year): Год основания команды.
Дивизион (Division): Дивизион или лига, в которой участвует команда.
Тренер (Coach): Имя и фамилия тренера команды.
УИД портала (portalUuid): УИД портала футбольной тематики, с которым данная команда связана. Это поле устанавливает связь "1-ко-многим" между командой и порталом.
Информация о портале (portalInfo): Информация полученная по portalUuid и УИД портала о портале футбольной тематики. Хранит в себе информацию о Портале футбольной тематики (Name, Supported Platforms, Maximum Users).
Сущность: Портал футбольной тематики (Football Portal):
УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретный портал футбольной тематики.
Название (Name): Название портала футбольной тематики.
Поддерживаемые платформы (Supported Platforms): Операционные системы и устройства, на которых работает портал (Web, iOS, Android и др.).
Максимальное количество пользователей (Maximum Users): Максимальное количество пользователей, которые могут зарегистрироваться на портале.
Связь "1-ко-многим" между этими сущностями реализуется через поле "УИД портала" в сущности "Футбольная команда". Каждая команда связывается с конкретным порталом футбольной тематики через УИД этого портала, и это позволяет одному порталу быть связанным с несколькими футбольными командами.
Пример модели "Портал футбольной тематики" для списка:
{
"uuid": "8f036445-a5bd-401c-926e-840f9de795cd",
"Name": "FootballHub",
"Supported Platforms": "Web, iOS, Android",
"Maximum Users": 100000
}
Пример модели "Портал футбольной тематики" для создания или изменения:
{
"uuid": "8f036445-a5bd-401c-926e-840f9de795cd",
"Name": "FootballHub",
"Supported Platforms": "Web, iOS, Android",
"Maximum Users": 100000
}
Пример модели "Футбольная команда" для списка:
{
"uuid": "8740d660-b251-4272-8535-be7ec3748d4b",
"Name": "FC Red Stars",
"Established Year": 1990,
"Division": "Premier League",
"Coach": "John Smith",
"portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd"
}
Пример модели "Футбольная команда" для создания или изменения:
{
"Name": "FC Red Stars",
"Established Year": 1990,
"Division": "Premier League",
"Coach": "John Smith",
"portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd"
}
Пример модели "Футбольная команда" для подробностей:
{
"uuid": "8740d660-b251-4272-8535-be7ec3748d4b",
"Name": "FC Red Stars",
"Established Year": 1990,
"Division": "Premier League",
"Coach": "John Smith",
"portalUuid": "8f036445-a5bd-401c-926e-840f9de795cd",
"portalInfo": {
"Name": "FootballHub",
"Supported Platforms": "Web, iOS, Android",
"Maximum Users": 100000
}
}
<p>
<div>1-й микросервис</div>
<img src="screens/img1.png" width="650" title="1-й микросервис">
</p>
<p>
<div>2-й микросервис</div>
<img src="screens/img2.png" width="650" title="2-й микросервис">
</p>
- контроллеры для обработка запросов, дтошки для отображения в сваггере, модели для сущностей, репозитории для отправки данных, сервисы для бизнес-логики
# Докер файлы, докер компоус, nginx
<p>
<div>Докер файл 1-го микросервиса</div>
<img src="screens/img3.png" width="650" title="Докер файл 1-го микросервиса">
</p>
<p>
<div>Докер файл 2-го микросервиса</div>
<img src="screens/img4.png" width="650" title="Докер файл 2-го микросервиса">
</p>
-Использования базового образа, установка рабочий директории, копирования jar файла, экспорт порта, запуск приложения при запуске контейнера
<p>
<div>Докер компоус</div>
<img src="screens/img5.png" width="650" title="Докер компоус">
</p>
-создания общей сети для сервисов, запуск образов сервисов, проброска портов, копирования конфигурационного файла nginx и запуск этого сервиса после запуска других сервисов
<p>
<div>nginx</div>
<img src="screens/img6.png" width="650" title="nginx">
</p>
установка количества одновремменных подключений, прослушка запросов по 80 порту, серверное имя локалхост, адрес для переадресации запросов по нему, url переадрусации
<p>
<div>Скрин созданых образов</div>
<img src="screens/img7.png" width="650" title="Скрин созданых образов">
</p>
<p>
<div>Скрин созданых контейнеров</div>
<img src="screens/img8.png" width="650" title="Скрин созданых контейнеров">
</p>
<p>
<div>Swagger 1-го микросервиса</div>
<img src="screens/img9.png" width="650" title="Swagger 1-го микросервиса">
</p>
<p>
<img src="screens/img10.png" width="650">
</p>
<p>
<img src="screens/img11.png" width="650">
</p>
<p>
<img src="screens/img12.png" width="650">
</p>
<p>
<img src="screens/img13.png" width="650">
</p>
<p>
<div>Swagger 2-го микросервиса</div>
<img src="screens/img14.png" width="650" title="Swagger 2-го микросервиса">
</p>
<p>
<img src="screens/img15.png" width="650">
</p>
<p>
<img src="screens/img16.png" width="650">
</p>
<p>
<img src="screens/img17.png" width="650">
</p>
<p>
<img src="screens/img18.png" width="650">
</p>
# Видео
Видео с разбором лабораторной работы - https://drive.google.com/file/d/1o9Ao5Q6TP-UcOb_49SbRwackclGTJOYD/view?usp=sharing