86 lines
5.0 KiB
Markdown
86 lines
5.0 KiB
Markdown
|
# Лабораторная работа номер 4
|
|||
|
|
|||
|
> Здравствуйте меня зовут Балахонов Данила группа ПИбд-42
|
|||
|
>
|
|||
|
> *— Балахонов Данила ПИбд-42*
|
|||
|
|
|||
|
Видео лабораторной работы номер 4 доступно по этой [ссылке](https://drive.google.com/file/d/1OZJ67OmOnQCAAb2VVg4OV7qMlZ1Y_HsH/view?usp=sharing).
|
|||
|
|
|||
|
## Как запустить лабораторную работу номер 4?
|
|||
|
### Необходимые компоненты для запуска лабораторной работы номер 4
|
|||
|
> Здесь рассказана установка необходимых компонентов для запуска лабораторной работы номер 3 под дистрибутив GNU/Linux **Ubuntu**.
|
|||
|
|
|||
|
Для запуска лабораторной работы номер 4 необходимы такие компоненты:
|
|||
|
- Git
|
|||
|
- Docker
|
|||
|
- Docker compose
|
|||
|
|
|||
|
Чтобы установить **Git**, необходимо ввести данные команды в командную строку:
|
|||
|
``` bash
|
|||
|
sudo apt-get update
|
|||
|
sudo apt-get install git
|
|||
|
```
|
|||
|
|
|||
|
Чтобы установить **Docker** и **Docker compose**, стоит ввести такие команды:
|
|||
|
``` bash
|
|||
|
# Настройка репозитория Docker
|
|||
|
sudo apt-get update
|
|||
|
sudo apt-get install ca-certificates curl
|
|||
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|||
|
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
|||
|
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
|||
|
|
|||
|
echo \
|
|||
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|||
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|||
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|||
|
sudo apt-get update
|
|||
|
|
|||
|
# Установка Docker и его компонентов
|
|||
|
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|||
|
```
|
|||
|
|
|||
|
Помимо Docker необходимо установить `python3`.
|
|||
|
``` bash
|
|||
|
sudo apt install python3
|
|||
|
```
|
|||
|
### Запуск лабораторной работы номер 4
|
|||
|
Для запуска лабораторной работы номер 4 необходимо **склонировать** репозиторий в любую папку и **перейти на ветку** balakhonov_danila_lab_4.
|
|||
|
Далее в папке с `docker-compose.yaml` нужно вызвать такую команду:
|
|||
|
``` bash
|
|||
|
sudo docker compose up -d
|
|||
|
```
|
|||
|
Таким образом контейнер с редисом будет запущен в фоне.
|
|||
|
|
|||
|
Чтобы запустить программу, нужно вызывать три разных файла:
|
|||
|
- Файл *издателя*
|
|||
|
``` bash
|
|||
|
python3 program/publisher.py
|
|||
|
```
|
|||
|
- Файл *первого потребителя* с задержкой
|
|||
|
``` bash
|
|||
|
python3 program/consumer_1.py
|
|||
|
```
|
|||
|
- Файл *второго потребителя*
|
|||
|
``` bash
|
|||
|
python3 program/consumer_2.py
|
|||
|
```
|
|||
|
## Какие технологии были использованы?
|
|||
|
Для выполнения лабораторной работы номер 4 были использованы такие технологии, как:
|
|||
|
- Docker compose
|
|||
|
- Git
|
|||
|
- Python 3
|
|||
|
- Pika
|
|||
|
- RabbitMQ
|
|||
|
## Что делает лабораторная работа номер 4?
|
|||
|
Суть лабораторной работы номер 4 заключается в получении навыков работы с брокером сообщений.
|
|||
|
## Вывод лабораторной работы номер 4
|
|||
|
Были пройдены туториалы по ознакомлению с RabbitMQ:
|
|||
|
### 1 туториал
|
|||
|
![1 туториал](imgs/tutor1.png)
|
|||
|
### 2 туториал
|
|||
|
![2 туториал](imgs/tutor2.png)
|
|||
|
### 3 туториал
|
|||
|
![3 туториал](imgs/tutor3.png)
|
|||
|
|
|||
|
Также была разработана программа, которая состоит из издателя и двух потребителей. Разница между двумя потребителями заключается в скорости их обработки. Первый потребитель имеет некоторую задержку, поэтому он обрабатывает полученные данные гораздо дольше, чем второй потребитель. Из-за задержки происходит накапливание сообщений в очереди первого потребителя. Так как второй потребитель не имеет задержек, то и его очередь не будет настолько заметно возрастать. Если запустить несколько первых потребителей, то очередь также накапливается, но она меньше, так как уже два потребителя принимают сообщения.
|