Лучший подход для соединения двух серверов API REST nodejs - PullRequest
0 голосов
/ 12 июня 2018

Сценарий: у меня есть два приложения Node, которые предоставляют некоторые API-интерфейсы REST, Server_A имеет некоторый набор конечных точек REST, а Server_B имеет некоторый другой набор конечных точек.

У нас есть требование, когда Server_A нужны данные изServer_B.Мы можем создать некоторые конечные точки REST для этого, но будут некоторые проблемы с производительностью.Server_A будет каждый раз создавать http-соединение с Server_B.

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

Server_B будет выполнять большинство операций с базой данных, Server_A имеет только вычисления.Server_A вызовет Server_B для некоторых требований к данным.

Кроме того, будет только одно сокетное соединение, которое находится между Server_A и Server_B, все другие клиенты будут подключаться только через REST.

Может кто-нибудь подсказать, будет ли это правильным подходом?Или у вас есть идея получше.

Было бы полезно, если бы я получил ссылки на код, предложения модулей.Спасибо

1 Ответ

0 голосов
/ 12 июня 2018

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

HTTP-соединения довольно быстрые.Существуют базы данных, которые работают с использованием HTTP API, и к этим базам обращаются при каждом HTTP-запросе сервера.Итак, часто используемый HTTP API может работать просто отлично.

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

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

К вашему сведению, соединение webSocket имеет некоторые преимущества по сравнению с повторными соединениями HTTP (меньше накладных расходов на соединение на запрос), но также есть и некоторые недостатки (это не запрос / ответ, поэтому вы придумали собственный способ сопоставления ответа с данным запросом).

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