DAS_2024_1/kalyshev_yan_lab_4/README.md
2024-11-08 01:04:56 +04:00

48 lines
4.6 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.

# Отчет. Лабораторная работа 4
## Описание
В ходе лабораторной работы были изучены главы туториала по работе с RabbitMQ, в результате чего получен отчет о выполнении заданий каждой главы, представленный на скриншотах в папке /images:
- Первый туториал:
![Tutorial-1](./images/Tutorial-1.png)
- Второй туториал:
![Tutorial-2](./images/Tutorial-2.png)
- Третий туториал:
[Tutorial-3](./images/Tutorial-3.png)
Чтобы продемонстрировать работу сервисов посредством ассинхронного общения через брокер сообщений RabbitMQ была выбрана предметная область администрирования компьютеров, где мы отслеживаем события включения компьютеров.
Сервис-издатель "Publisher" публикует в очередь сообщений событие поступления заказа с некоторым номером. Сервисы-подписчики обрабатывают сообщения о заказах, при этом подписчики обрабатывают сообщение по-разному: один вид подписчика обрабатывает его со задержкой несколько секунд, другой - "мгновенно", они получают одни и те же сообщения, но соединены с разными очередями.
В качестве эксперимента изначально были запущены по одному экземпляру каждого вида. На Consumer2.png представлена работа мгновенно обрабатывающего подписчика, справляющегося с нагрузкой без увеличения размера очереди:
![Consumer 2](./images/Consumer2.PNG)
На Consumer1.png представлена работа подписчика, обрабатывающего сообщения с задержкой. В очереди накапливаются сообщения в состоянии 'Ready', которые готовы для того чтобы быть доставленными подписчикам. Сервис не справляется с нагрузкой, так как отправляются сообщения быстрее, чем обрабатываются:
![Consumer 1](./images/Consumer1.PNG)
Чтобы обеспечить равную скорость отправки и обработки, увеличивается количество экземпляров-подписчиков данного типа до трех. На Consumer1-scaling.png видно, что теперь длина очереди не растет и система справляется с поступающими сообщениями. Скорость "publish" и "consumer ack" также становится равной:
![Consumer 1](images/Consumer1-3_replicas.png)
## Как запустить
Для того, чтобы запустить сервисы, необходимо выполнить следующие действия:
1. Установить и запустить Docker Engine или Docker Desktop
2. Через консоль перейти в папку, в которой расположен файл docker-compose.yml
3. Выполнить команду для запуска брокера сообщений rabbitmq:
```
docker compose up rabbit -d
```
4. Выполнить команду для запуска остальных контейнеров:
```
docker compose up -d
```
Такой порядок запуска важен для того, чтобы брокер сообщений успел полностью запуститься и произвести действия для того, чтобы быть готовым принимать соединения от сервисов. Потому что указания depends_on не хватает для отслеживания завершения всех необходимых подготовительных процессов брокера.
## Видео-отчет
Работоспособность лабораторной работы можно оценить в следующем [видео]https://zyzf.space/s/iWxb6b4EFQjPias).