отправка данных из БД через Remote DataBase или rabimtMQ - PullRequest
0 голосов
/ 30 января 2019

Я создал два приложения в узле js

i: Parser (сервер 1)

ii: функциональное приложение с API остальных (сервер 2)

Каждое приложение запускаетсяподключение к другому серверу

базы данных (MongoDB) на сервере 2

основное назначение синтаксического анализатора - получить данные об аппаратном устройстве, реализовать протокол и отправить данные в базу данных

* 1012.* Теперь у меня есть две опции для отправки данных с сервера 1 на сервер 2 db

1: RemoteDb

2: RabitMQ для отправки данных на сервер 2 и последующего сохранения данных в localDB

какой из них лучше или любое другое решение

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Удаленное соединение с БД не подходит для нескольких узлов, всегда используйте любой протокол связи, такой как Redis или Raabbit MQ и т. Д. Давайте рассмотрим пример

Приложение парсера развернуто на 3 разных серверных узлах, иНесколько устройств iot отправляют непрерывные данные, которые необходимо проанализировать и доставить в базу данных.Так что

  1. При удаленном подключении к базе данных он не сможет быстро обработать данные и их ответы, и есть вероятность, что соединение может быть разорвано в случае узкого места.
  2. При Redis-Cluster Подход, он будет быстро доступен.
  3. С Rabbit MQ, сообщения трудно получить обратно, поэтому применять его только там, где не будет проблем, если сообщения могут быть пропущены.
0 голосов
/ 30 января 2019

Как всегда, это зависит от ваших требований.
Если вы хотите хранить только данные, то есть, в основном, вставлять действия в базу данных, и нет никаких требований к данным, обрабатываемым с сервера2 перед сохранением, вы можетевыберите вариант 1.

В будущем проблем не будет, если вы захотите перенести базу данных в отдельную службу из сервера 2, поскольку на данный момент она уже отделена от анализатора.
Также,Рекомендуется следовать Принципу единой ответственности и разделять служебную логику.
В вашем случае лучше обрабатывать всю логику анализа / сохранения в модуле синтаксического анализатора.

Просто примечание, есливы хотите обрабатывать огромное количество данных, для аналитических целей или для чего-то еще, было бы быстрее разместить скрипт на том же сервере, что и ваша база данных, потому что вы удалите сетевую задержку

Но, если выесть некоторая дополнительная логика в вашем API.
Например, вы хотите уведомлять пользователей об обновлениях через веб-сокеты.
Это было быsier для реализации логики с очередями.
Поскольку анализатор просто отправляет сообщения в очередь и забывает о них.
Затем ваш API на сервере2 будет прослушивать сообщения и уведомлять пользователей об обновлениях.

Итак, решение заключается в использовании удаленной базы данных иесли у вас есть какие-то дополнительные требования, используйте очереди или Redis или gRPC или любой другой способ передачи услуг.



Дополнительные ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...