В настоящее время я пытаюсь реорганизовать программу с монолитной на микро-сервисную архитектуру, и я не знаю, как поступить:
Цель программы проста, она получает необработанные данные (байты)), разделить его и преобразовать во что-то значимое и прикрепить обратно к исходному сообщению, какое-то обогащение.Например:
Input, message A:
{
Id:
Size:
Data:
}
Output, message A:
{
Id:
Parsed Data:
{
Field 1
Field 2
}
}
Я добавлю, что в соответствии со значением Size требуется другое приложение (другая маршрутизация).
И это можно разделить на несколько слоеврасщепление и обогащение.До сих пор все происходило в одном решении, и оно было огромным и сложным в обслуживании.Поэтому я решил перейти на микросервисную архитектуру.Я начал с Nameko со встроенной поддержкой rabbitmq, но через некоторое время я заметил, что для публикации события я использую только @handle_event
и Dispatcher, а не @rpc
.
Итак, у меня есть 3 вопроса:
- Как вы думаете, микро-сервисная архитектура - лучший путь?Поскольку я заполняю меньше запросов на получение запросов и больше публикаций и подписок, одно приложение манипулирует данными, а затем отправляет их в другое приложение, которое получает ту же дозу.работа с Rabbitmq.
- Каков наилучший способ обработки сложной (не просто тематической маршрутизации) с rabbitmq?