senkin_alexander_lab_4 is ready #33
1
senkin_alexander_lab_4/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
./idea
|
35
senkin_alexander_lab_4/README.md
Normal file
@ -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
|
BIN
senkin_alexander_lab_4/img.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
senkin_alexander_lab_4/img_1.png
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
senkin_alexander_lab_4/img_2.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
senkin_alexander_lab_4/img_3.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
senkin_alexander_lab_4/img_4.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
senkin_alexander_lab_4/img_5.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
senkin_alexander_lab_4/img_6.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
senkin_alexander_lab_4/img_7.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
senkin_alexander_lab_4/img_8.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
senkin_alexander_lab_4/img_9.png
Normal file
After Width: | Height: | Size: 107 KiB |