DAS_2024_1/zhimolostnova_anna_lab_4/README.md
2024-10-09 17:12:11 +03:00

80 lines
5.7 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
## Поставленные задачи
1. Установить брокер сообщений RabbitMQ.
2. Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования.
3. Продемонстрировать работу брокера сообщений.
## Предметная область
Уведомление о штрафах за нарушение ПДД.
## Запуск работы
1. Убедиться, что установлены необходимые технологии:
- **Docker**: Платформа для контейнеризации приложений.
- **RabbitMQ**: Брокер сообщений.
- **Docker Compose**: Инструмент для запуска многоконтейнерных приложений на основе `docker-compose.yaml`. Обычно поставляется вместе с Docker. Чтобы проверить, установлена ли утилита, нужно запустить команду:
```bash
docker-compose --version
```
2. В директории, где находится файл `docker-compose.yaml`, выполнить следующую команду для запуска всех сервисов:
```bash
docker-compose up --build
```
Эта команда сначала выполнит сборку, а затем запустит контейнеры.
3. После успешного запуска можно перейти на RabbitMQ Management UI:
- RabbitMQ Management UI: [http://localhost:15672/#/](http://localhost:15672/#/).
## Технологии
1. Golang: основной язык программирования.
2. Docker & Docker Compose: для контейнеризации сервисов и удобного развертывания.
3. RabbitMQ: брокер сообщений.
## Анализ полученных данных
![SlowQueueResult.png](ReportImages%2FSlowQueueResult.png)
Для замедленной очереди можно сделать следующие выводы:
- Все 366 сообщений доставлены потребителям, но они еще не подтверждены.
Поскольку "Ready" равен нулю, это означает, что все сообщения сразу передаются потребителям,
и ни одно сообщение не ожидает очереди.
- Однако, поскольку все 366 сообщений находятся в состоянии "Unacked",
это указывает на то, что потребитель не подтверждает обработку сообщений вовремя,
что связано с медленной обработкой (как предполагает название очереди slow_consumer_queue).
- Публикация сообщений идет с постоянной скоростью 1 сообщение в секунду,
и с той же скоростью сообщения доставляются потребителю.
- Однако скорость подтверждения (Consumer ack) составляет лишь 0.60 сообщений в секунду,
что означает, что потребитель обрабатывает и подтверждает сообщения медленнее, чем они поступают.
Это вызывает накопление неподтвержденных сообщений в очереди (Unacked), и со временем их число
может продолжать расти, если скорость обработки не увеличится.
![FastQueueResult.png](ReportImages%2FFastQueueResult.png)
Для быстрой очереди можно сделать следующие выводы:
- Очередь пуста. Т.е. нет сообщений, которые ожидают обработки или находятся в процессе обработки.
Это означает, что потребитель обрабатывает сообщения сразу после их получения, и сообщения не
накапливаются в очереди.
- Сообщения публикуются и доставляются потребителю со скоростью 1 сообщение в секунду, и
потребитель подтверждает обработку каждого сообщения также со скоростью 1 сообщение в секунду.
- Поскольку скорость подтверждения и доставки совпадают, сообщений не накапливается, и все
обрабатывается своевременно.
## Ход работы
1. **Прохождение первого урока**: директория FirstTutorial
![FirstTutorial.png](ReportImages%2FFirstTutorial.png)
2. **Прохождение второго урока**: директория SecondTutorial
![SecondTutorial.png](ReportImages%2FSecondTutorial.png)
3. **Прохождение третьего урока и выполнение задания на ЛР №3**: директория ThirdTutorial
![ThirdTutorial.png](ReportImages%2FThirdTutorial.png)
В коде присутствуют пояснительные комментарии.
## Демонстрационное видео
Видеозапись доступна по адресу: [https://vk.com/video193898050_456240872](https://vk.com/video193898050_456240872)