distributed-computing/tasks/grenaderova-aa/lab_3/README.md

85 lines
2.4 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 и синхронный обмен между микросервисами
## Создание микросервисов
1. С помощью команды `dotnet new web -n worker-1` в терминале создала первый микросервис
2. Добавила решение командой `dotnet new sln`
3. Связала решение и проект командой `dotnet sln worker-1.sln add worker-1.csproj`
4. Повторила действие для второго микросервиса
5. Добавила библиотеку Swagger и OpenAi в проекты и запустила с помощью команды `dotnet run`
Скриншот протестированного микросервиса:
![](screens/1.png)
## Реализация синхронного обмена
Реализовала код, который вызывает сихронно данные из соседнего микросервиса.
```cs
//worker-2
app.MapGet("/Houses/", async () =>
{
var httpClient = new HttpClient();
var secondWorkerResponse = await httpClient.GetStringAsync("http://worker-1:8080/");
return secondWorkerResponse.ToArray();
})
.WithName("GetStreets")
.WithOpenApi();
```
## Реализация gateway при помощи nginx
Добавила nginx.conf:
```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:
![](screens/2.png)
index.html на gateway-1:
![](screens/3.png)
worker-1:
![](screens/4.png)
worker-2:
![](screens/5.png)