DAS_2023_1/senkin_alexander_lab_4/README.md

35 lines
4.2 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.
- Пройти уроки 1, 2 и 3 из RabbitMQ Tutorials на любом языке программирования.
- Продемонстрировать работу брокера сообщений.
# Kafka и RabbitMQ
Kafka - брокер сообщений, работающий по схеме глупый брокер, умный консьюмер, то есть продюсер пушит сообщение на сервер kafka, а подписчики сами берут сообщения из пула.
Kafka используют для потоковой передачи информации без сложной маршутиризации, но с максимальной пропускной способность.
RabbitMQ - брокер сообщений, работающий по схеме умный брокер, глупый консьюмер, то есть продюсер пушит сообщение на сервер RabbitMQ, а подписчики получают сообщения от сервера.
RabbitMQ обеспечивает эффективную доставку сообщений в рамках сложных сценариев маршутиризации.
# Разработка трех распределенных приложений
Было решено не разрабатывать заново микросервисы а взять существующую реализованную распределенную систему. В ней реализовано 3 сервиса: Сервис Ресторана, Сервис Пользователей, Сервис Статистики. В этом приложении реализована работа с брокером kafka, Сервис пользователя - продюсер, Сервисы ресторана и статистики - подписчики.
Приложение разработано на языке Go.
# Работа программы
- Скачиваем kafka и zookeper например локально на машину и запускаем их: ![img_1.png](img_1.png)
- Пользователь после создания заказа отправляет сообщение с информацией о заказе на сервер kafka. Часть кода создания подключения продюсера к серверу: ![img_2.png](img_2.png)
- Сервисы ресторана и статистики, в которых kafka работает в фоновом режиме, берут новые сообщения о заказах из сервера и обрабатывают их. Часть кода подключения подписчиков к серверу: ![img_3.png](img_3.png)
- Запускаем все сервисы и смотрим работу программы. Для начала создаем заказ из сервиса пользователя и отправляем его на сервер kafka: ![img_4.png](img_4.png) ![img_5.png](img_5.png)
- Далее сервисы ресторана и статистики берут в отдельном потоке сообщения с сервера. Консоль сервиса ресторана: ![img_6.png](img_6.png)
- Консоль сервиса статистики: ![img_7.png](img_7.png)
- В базе данных также поменялось количество заказов двух сервисов, в ресторане было 20 записей, стало 21, а на сервисе статистики было 29, стало 30: ![img_8.png](img_8.png) ![img_9.png](img_9.png)
- Можно подвести итог, что система работает успешно и kafka выполняет назначенные ей функции.
# Видео
Видео с разбором лабораторной работы - https://youtu.be/w-F-fWRN3ig