Архитектура: потоковая консолидация данных

Я пытаюсь придумать архитектуру, в которой есть несколько клиентов потоков/RPC, работающих на Python-Autobahn. У нас есть перекрестный брокер, который позволяет потребительскому приложению принимать RPC/поток и препроцессировать эти значения в базах данных. В настоящее время у нас есть стратегия использования

      
[
N client (publishing stream /registering/calling RPC) —> Xbar1 —> a consumer application which takes care of all these data points by N clients and stored them in the DB
M client (publishing stream /registering/calling RPC) —> Xbar2 —> a consumer application which takes care of all these data points by M clients  and stored them in the DB
]

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

      All client (publishing stream /registering/calling RPC) —> Xbar1 —>  a consumer application which takes care of all these data points   and stored them in the DB

Достигнута емкость 80 %, нам нужно развернуть новый экземпляр xbar для балансировки нагрузки.

      All client (publishing stream /registering/calling RPC) —> Xbar1 —>  a consumer application which takes care of all these data points and stored them in the DB
                                                           Xbar2 —>  a consumer application which takes care of all these data points and stored them in the DB

Проблема в том, что мы не хотим иметь двойные записи в БД, поскольку одно и то же сообщение будет обработано Xbar1 и Xbar2, если мы масштабируемся в зависимости от нагрузки. Нам нужен какой-то сервис, который объединяет точки данных и обрабатывает их один раз. , Я хотел бы выслушать некоторые идеи и узнать о потенциальном решении.

0 ответов

Другие вопросы по тегам