DAS_2024_1/ismailov_rovshan_lab_4/README.md

46 lines
3.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.
## ПИбд-42 || Исмаилов Ровшан
### Цель лабораторной работы
Изучение проектирования приложений при помощи брокера сообщений.
### Задачи №1 и №2:
В ходе выполнения данной лабораторной работы был установлен брокер сообщений RabbitMQ. Для изучения его возможностей были освоены первые три урока из RabbitMQ Tutorials на языке программирования Python.
- Результат первого урока:
!![изображение 2](pictures/lesson_1_1.png)
!![изображение 2](pictures/lesson_1_2.png)
- Результат второго урока:
!![изображение 2](pictures/lesson_2_1.png)
!![изображение 2](pictures/lesson_2_2.png)
!![изображение 2](pictures/lesson_2_3.png)
- Итоги третьего урока:
!![изображение 2](pictures/lesson_3_1.png)
!![изображение 2](pictures/lesson_3_2.png)
### Предметная область:
В качестве предметной области выбрана тема — интернет-магазин.
### Задача №3:
В рамках лабораторной работы по выбранной предметной области были разработаны демонстрационные приложения: Publisher, Consumer_1 и Consumer_2. Результаты их выполнения представлены ниже.
- Данные из очереди **first**, запущен один экземпляр **Consumer_1**:
![изображение 1](pictures/main_1.png)
- Данные из очереди **second**, запущен один экземпляр **Consumer_2**:
![изображение 2](pictures/main_2.png)
- Данные из очереди **first**, запущено два экземпляра **Consumer_1**:
![изображение 3](pictures/main_3.png)
- Данные из очереди **first**, запущено три экземпляра **Consumer_1**:
![изображение 4](pictures/main_4.png)
### Выводы:
По представленным данным можно сделать следующие выводы:
- **second** практически не заполняется, так как обработка сообщений происходит мгновенно, и они не задерживаются в очереди.
- **Consumer_1** тратит 2 секунды на обработку каждого сообщения, что приводит к быстрому заполнению очереди **first_queue**, если запущен только один экземпляр.
- Чем больше экземпляров **Consumer_1** запущено, тем медленнее заполняется очередь. Это объясняется тем, что каждый экземпляр обрабатывает сообщения из очереди, и нагрузка распределяется между ними.
- С увеличением числа экземпляров можно достичь такого состояния, когда очередь перестанет заполняться, поскольку сообщения будут обрабатываться с той же скоростью, с которой они поступают.
### Видео с демонстрацией работы:
https://cloud.mail.ru/public/2B4T/24cuj1Kv9