Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   На каком протоколе реализовать обмен между двумя серверами. (https://javascript.ru/forum/node-js-io-js/74899-na-kakom-protokole-realizovat-obmen-mezhdu-dvumya-serverami.html)

jtag 15.08.2018 06:45

На каком протоколе реализовать обмен между двумя серверами.
 
Всем добрый день. Посдкажите пожалуйста как можно сделать передачу между двумя серверами. Плохо представляю шаблон. Какой протокол использовать tcp или http? Был один из вариантов на tcp.
Первый сервер:
Создаю сервер для прослушки: net.createServer().listen(9999)
И создаю сокет для отправки данных socket = new net.Socket()
Второй сервер:
Создаю сервер net.cteateServer().listen(8888)
И создаю сокет socket = net.Socket()
Получается данные передаются в одну сторону по одному порту, в обратную сторону по другому порту.
Но предполгаю что получится низкоуровнего. И может использовать лучше http протокол. Если допустим настроить на каждом сервере express js?

Белый шум 15.08.2018 11:29

http работает поверх tcp:
Сетевая модель OSI
Конкретный выбор зависит от задач, но судя по вопросу - вам лучше по http.

Цитата:

Сообщение от jtag
Получается данные передаются в одну сторону по одному порту, в обратную сторону по другому порту.

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

Audaxviator 15.08.2018 11:58

Один сервер - "сервер", другой сервер - "клиент".

SuperZen 16.08.2018 14:26

предлагаю использовать socket.io, супер изи )

https://socket.io/

там и fullduplex, и автореконнект, и ...

jtag 17.08.2018 10:19

Цитата:

Сообщение от SuperZen (Сообщение 492880)
предлагаю использовать socket.io, супер изи )

https://socket.io/

там и fullduplex, и автореконнект, и ...

Всем спасибо за ответы. Тоже задумывался, про socket.io. Уже написал обмен сообщениями на модули http и request. Но сейчас возникли некоторые непонятности. Планируется установить главный сервер с бд, и примерно несколько десятков вторичных серверов с локальной бд, которые будут общаться с главным сервером. Сможет ли socket.io обеспечить паралельное получение данных на центр. сервере?, передачу длинных json строк после sql?

SuperZen 17.08.2018 12:03

Цитата:

Сообщение от jtag (Сообщение 492949)
Всем спасибо за ответы. Тоже задумывался, про socket.io. Уже написал обмен сообщениями на модули http и request. Но сейчас возникли некоторые непонятности. Планируется установить главный сервер с бд, и примерно несколько десятков вторичных серверов с локальной бд, которые будут общаться с главным сервером. Сможет ли socket.io обеспечить паралельное получение данных на центр. сервере?, передачу длинных json строк после sql?

Для синхронизации бд после выхода из оффлайн любого из участников, я нашел только два кандидата PouchDB и GunDB (можно как middleware в express поставить), и чтобы они могли работать и на node и в browser. И клиенты, могу подключать из-за NAT.

Сможет ли socket.io обеспечить паралельное получение данных на центр. сервере?, передачу длинных json строк после sql?
Сможет, просто если делать руками, например, один из вторичных серверов ушел в оффлайн, на главный поступали данные, после выхода из оффлайн вторичный сервер должен делать что? Сделать запрос, и обновить локальную бд? Если условия простые, можно и так.

https://socketcluster.io - можно еще такую штуку посмотреть

jtag 17.08.2018 19:43

все данные находяться в mysql, пока не можем менять бд. Продолжу пока допиливать приложение на нативном http модуле. Непонятна одна ситуация: если запущен отдельный процесс через child_process.fork() на центр сервере, который отправляет данные раз в час по http, выделять ли для него дополнительный порт, либо с одного сервера со всех процессов отправлять данные через один порт. Возможно существует какая - либо литература по организации бэкэнд приложений и посторению правильной архитектуры на протоколах?

Белый шум 18.08.2018 05:48

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

Порт (компьютерные сети)


Часовой пояс GMT +3, время: 02:51.