diff --git a/senkin_alexander_lab_4/.gitignore b/senkin_alexander_lab_4/.gitignore new file mode 100644 index 0000000..e0a1c00 --- /dev/null +++ b/senkin_alexander_lab_4/.gitignore @@ -0,0 +1 @@ +./idea \ No newline at end of file diff --git a/senkin_alexander_lab_4/README.md b/senkin_alexander_lab_4/README.md new file mode 100644 index 0000000..4e4ddab --- /dev/null +++ b/senkin_alexander_lab_4/README.md @@ -0,0 +1,35 @@ +# Лабораторная работа №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 \ No newline at end of file diff --git a/senkin_alexander_lab_4/img.png b/senkin_alexander_lab_4/img.png new file mode 100644 index 0000000..3a49f3b Binary files /dev/null and b/senkin_alexander_lab_4/img.png differ diff --git a/senkin_alexander_lab_4/img_1.png b/senkin_alexander_lab_4/img_1.png new file mode 100644 index 0000000..5d2e437 Binary files /dev/null and b/senkin_alexander_lab_4/img_1.png differ diff --git a/senkin_alexander_lab_4/img_2.png b/senkin_alexander_lab_4/img_2.png new file mode 100644 index 0000000..7b3a3c1 Binary files /dev/null and b/senkin_alexander_lab_4/img_2.png differ diff --git a/senkin_alexander_lab_4/img_3.png b/senkin_alexander_lab_4/img_3.png new file mode 100644 index 0000000..0968de3 Binary files /dev/null and b/senkin_alexander_lab_4/img_3.png differ diff --git a/senkin_alexander_lab_4/img_4.png b/senkin_alexander_lab_4/img_4.png new file mode 100644 index 0000000..b1320ab Binary files /dev/null and b/senkin_alexander_lab_4/img_4.png differ diff --git a/senkin_alexander_lab_4/img_5.png b/senkin_alexander_lab_4/img_5.png new file mode 100644 index 0000000..a643848 Binary files /dev/null and b/senkin_alexander_lab_4/img_5.png differ diff --git a/senkin_alexander_lab_4/img_6.png b/senkin_alexander_lab_4/img_6.png new file mode 100644 index 0000000..bdb2aba Binary files /dev/null and b/senkin_alexander_lab_4/img_6.png differ diff --git a/senkin_alexander_lab_4/img_7.png b/senkin_alexander_lab_4/img_7.png new file mode 100644 index 0000000..9e4fb04 Binary files /dev/null and b/senkin_alexander_lab_4/img_7.png differ diff --git a/senkin_alexander_lab_4/img_8.png b/senkin_alexander_lab_4/img_8.png new file mode 100644 index 0000000..944065c Binary files /dev/null and b/senkin_alexander_lab_4/img_8.png differ diff --git a/senkin_alexander_lab_4/img_9.png b/senkin_alexander_lab_4/img_9.png new file mode 100644 index 0000000..f3ad80c Binary files /dev/null and b/senkin_alexander_lab_4/img_9.png differ