Как лучше отправлять полученный блок строк на другой сервер построчно в Node.js - PullRequest
0 голосов
/ 30 апреля 2020

не могли бы вы сказать мне, как сделать это лучше? Я новичок и никогда раньше не сталкивался с такой задачей. Честно говоря, этот вопрос не полностью о Node.js, а скорее об алгоритме передачи данных в этом случае.

Так дано

  1. Сервер 1, который получает запросы с удаленного неконтролируемого клиента. Запрос представляет собой блок строк. Размер блока (количество строк в блоке) может быть разным. Клиент ожидает от сервера 1 подтверждения после получения блока данных. В случае успешного подтверждения передается новый блок, в случае ошибки блок передается повторно

  2. Задача Сервера 1 состоит в дальнейшей передаче этих данных через API на Сервер 2. Второй сервер получает данные построчно.

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

Опция 1 После получения данных Сервер 1 разбивает их на строки и отправляет их через API на Сервер 2 по одному. Сервер 1 отвечает клиенту только после завершения передачи данных на Сервер 2. Недостаток: если передача на сервер 2 медленная, клиент не будет ждать ответа и снова передаст данные ...

Опция 2 Сервер 1 записывает полученный блок данных в файл. Передача на сервер 2 выполняется другим приложением / процессом, который считывает строки из файла и удаляет их после успешной отправки. Недостаток: оказывается, что два процесса будут конкурировать за доступ к файлу. Я не уверен, что смогу решить это правильно. Буду признателен, если вы добавите ссылку, где вы можете прочитать об этом.

Вариант 3 Сервер 1 записывает строки в базу данных, а затем другое приложение / процесс считывает их из базы данных. и помечает их как отправленные после отправки на сервер 2. Недостаток: мне нужно поднять базу данных для довольно простого случая ... Я хочу избежать этого

Возможно, есть другие варианты, я был бы очень благодарен, если вы поделитесь своим опытом и предложите мне, как это сделать лучше.

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