distributed-computing/tasks/nikiforova-ts/Lab_3/Readme.md
2023-12-18 17:56:15 +04:00

83 lines
2.8 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
Выполнила: студентка гр. ИСЭбд-41 Никифорова Татьяна Сергеевна.
## REST API, Gateway и синхронный обмен между микросервисами
## Создание микросервисов
Использовала команду `dotnet new web -n worker-1` в терминале для создания моего первого микросервиса.
Далее, с помощью команды `dotnet new sln`, создала решение для проекта. Затем использовала команду `dotnet sln worker-1.sln add worker-1.csproj`, чтобы связать созданное решение с проектом.
Повторила те же действия для второго микросервиса, добавила оба проекта в единое решение.
Добавил библиотеку Swagger и OpenAi в проекты и запустил с помощью команды `dotnet run`".
Скриншоты API приложений:
![](picture/sworker-1.png)
![](picture/sworker-2.png)
## Реализация синхронного обмена
Реализовала механизм синхронного обмена сообщениями между микросервисами.
```cs
app.MapGet("/Authors/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/");
return secondWorkerResponse.ToArray();
})
.WithName("GetRequests")
.WithOpenApi();
```
## Реализация gateway при помощи nginx
Реализовала шлюз на основе прозрачного прокси-сервера nginx.
```conf
server {
listen 8080;
listen [::]:8080;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /worker-1/ {
proxy_pass http://worker-1:8080/;
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:8080/;
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:
![](picture/docker.png)
index.html на gateway-1:
![](picture/test.png)
worker-1:
![](picture/lworker-1.png)
worker-2:
![](picture/lworker-2.png)