distributed-computing/tasks/mutriskov-ds/lab_2/README.md

70 lines
4.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.

# Отчёт по лабораторной работе №2
Выполнил: студент гр. ИСЭбд-41 Мутрисков Данила
Вариант программы 1: Ищет в каталоге `/var/data` самый большой по объёму файл и перекладывает его в `/var/result/data.txt`.
Вариант программы 2: Ищет наименьшее число из файла `/var/data/data.txt` и сохраняет его третью степень в `/var/result/result.txt`.
## Создание приложений
Создадим 2 приложения.
Создано два приложения .Net 7.0 на языке C# с помощью команд:
Для создания обычных консольных приложений воспользуемся командами:
```sh
dotnet new console -o worker-1
dotnet new console -o worker-2
```
Согласно варианту программа 1 должна выбирать самый большой по объему файл из папки `/var/data` и перемещать его в папку `/var/result/data.txt`.
[Исходный текст программы worker-1](worker-1/Program.cs)
Согласно варианту программа 2 должна найти в файле `/var/data/data.txt` наименьшее число и сохранить его третью степень в файл `/var/result/result.txt`.
[Исходный текст программы worker-2](worker-2/Program.cs)
Дополнительно создан файл [.gitignore](.gitignore) для того, чтобы не закоммитить в git ничего лишнего.
## Настройка окружения
Для связи двух приложений воспользуемся следующей схемой:
1. Каталог `./data` должен быть примонтирован в каталог `/var/data` для программы 1.
Оттуда будут браться исходные данные.
2. Каталог `./result` должен быть примонтирован в каталог `/var/result` для программы 1.
Туда будут складываться промежуточные данные.
3. Каталог `./data` также должен быть примонтирован в каталог `/var/data` для программы 2.
Оттуда будут браться промежуточные результаты.
4. Каталог `./result` должен быть примонтирован в каталог `/var/result` для программы 2.
Туда будут складывать результаты финальной обработки.
Для каждой программы были созданы файлы Dockerfile ([программа 1](worker-1/Dockerfile), [программа 2](worker-2/Dockerfile)) с подробным описанием процесса сборки.
Был создан файл [docker-compose.yml](docker-compose.yml), в котором указан манифест для запуска распределённого приложения.
Дополнительно был создан файл [.dockerignore](.dockerignore) и дополнен [.gitignore](.gitignore), чтобы исключить для сборки и коммита всё лишнее.
## Сборка и запуск
В каталог `./data` помещены 2 файла.
Произведение чисел в первом файле равна 1078
Для запуска приложения необходимо ввести команду `docker compose up ---build`.
Результат запуска после сборки:
```
✔ Container lab_2-worker-1-1 Created 0.0s
✔ Container lab_2-worker-2-1 Created 0.0s
Attaching to lab_2-worker-1-1, lab_2-worker-2-1
lab_2-worker-1-1 exited with code 0
lab_2-worker-2-1 | 2197
lab_2-worker-2-1 exited with code 0
```
В результате в каталоге `./result` создался файл `result.txt` с содержимым `2197`, что соответствует входным данным.
Изменение значений в файлах из каталога `./data` также изменяет содержимое в файлах из каталога `./result`.