distributed-computing/tasks/plaksina-av/lab_3/README.md
2023-12-15 22:14:31 +04:00

91 lines
2.9 KiB
Markdown
Raw Permalink 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
Выполнила студентка гр. ИСЭбд-41 Плаксина А.В.
## REST API, Gateway и синхронный обмен между микросервисами
## Создание микросервисов
1. С помощью команды `dotnet new web -n worker-1` в терминале был создан первый микросервис
2. В папке созданного проекта добавлено решение командой `dotnet new sln`
3. Затем связали решение и проект командой `dotnet sln worker-2.sln add worker-1.csproj`
![](photo/ph1.jpg)
4. Повторили те же действия для второго микросервиса
5. Добавили библиотеку Swagger и OpenAi в обе папки проектов и запустил с помощью команды `dotnet run`
Моя предметная область - университет. Реализовала две сущности - кафедра и специальность.
Скриншоты протестированных микросервисов:
Worker-1:
![](photo/ph4.jpg)
Worker-2:
![](photo/ph5.jpg)
## Реализация синхронного обмена
Был реализован код, который вызывает сихронно данные из соседнего микросервиса.
```cs
//worker-2
app.MapGet("/Requests/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8085/");
return secondWorkerResponse;
})
.WithName("GetRequests")
.WithOpenApi();
```
## Реализация gateway при помощи nginx
Добавил nginx.conf:
```conf
server {
listen 8085;
listen [::]:8085;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /worker-1/ {
proxy_pass http://worker-1:8085/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /worker-1;
}
location /worker-2/ {
proxy_pass http://worker-2:8085/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /worker-2;
}
}
```
Результат, после выполнения команды `docker-compose up`:
Запущенные контейнеры в Docker Desktop:
![](photo/ph2.jpg)
Отображение index.html на gateway-1 после нажатия на ссылку `8085:8085` :
![](photo/ph3.jpg)
worker-1:
![](photo/ph6.jpg)
worker-2:
![](photo/ph7.jpg)