Бэкэнд потоковой архитектуры в Python - PullRequest
0 голосов
/ 28 января 2019

В настоящее время я пытаюсь реорганизовать программу с монолитной на микро-сервисную архитектуру, и я не знаю, как поступить:

Цель программы проста, она получает необработанные данные (байты)), разделить его и преобразовать во что-то значимое и прикрепить обратно к исходному сообщению, какое-то обогащение.Например:

Input, message A:
{
    Id:
    Size:
    Data:
}
Output, message A:
{
    Id:
    Parsed Data: 
    {
        Field 1
        Field 2
    }
}

Я добавлю, что в соответствии со значением Size требуется другое приложение (другая маршрутизация).

И это можно разделить на несколько слоеврасщепление и обогащение.До сих пор все происходило в одном решении, и оно было огромным и сложным в обслуживании.Поэтому я решил перейти на микросервисную архитектуру.Я начал с Nameko со встроенной поддержкой rabbitmq, но через некоторое время я заметил, что для публикации события я использую только @handle_event и Dispatcher, а не @rpc.

Итак, у меня есть 3 вопроса:

  1. Как вы думаете, микро-сервисная архитектура - лучший путь?Поскольку я заполняю меньше запросов на получение запросов и больше публикаций и подписок, одно приложение манипулирует данными, а затем отправляет их в другое приложение, которое получает ту же дозу.работа с Rabbitmq.
  2. Каков наилучший способ обработки сложной (не просто тематической маршрутизации) с rabbitmq?

1 Ответ

0 голосов
/ 18 февраля 2019

Это больше похоже на конвейер обработки данных, чем на микросервисную архитектуру.Вы могли бы создать его с Nameko, но вы бы заново изобрели колесо.

Если вы создаете конвейер данных, тогда что-то вроде apache beam будет более подходящим.

...