Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用web api而不是tcp套接字进行主/从通信是一个坏主意吗?_Node.js_Master Slave - Fatal编程技术网

Node.js 使用web api而不是tcp套接字进行主/从通信是一个坏主意吗?

Node.js 使用web api而不是tcp套接字进行主/从通信是一个坏主意吗?,node.js,master-slave,Node.js,Master Slave,TL:DR;对于主从模式,使用RESTful API而不是TCP/Socket连接是否存在任何缺点/缺陷 我正在编写一个web应用程序,该应用程序从第三方API获取数据,计算统计数据(以及更多),并显示数据。提取的数据存储在数据库中 我正在用NodeJS和AngularJS编写这个web应用程序 因此,该应用程序将执行两个基本操作: 回答来自前端的HTTP请求 更新数据库。这包括:获取数据、将数据保存到数据库,以及在内存数据库(如redis)中每隔5分钟缓存一些繁重查询的结果 我想将这些操作分

TL:DR;对于主从模式,使用RESTful API而不是TCP/Socket连接是否存在任何缺点/缺陷


我正在编写一个web应用程序,该应用程序从第三方API获取数据,计算统计数据(以及更多),并显示数据。提取的数据存储在数据库中

我正在用NodeJS和AngularJS编写这个web应用程序

因此,该应用程序将执行两个基本操作:

  • 回答来自前端的HTTP请求
  • 更新数据库。这包括:获取数据、将数据保存到数据库,以及在内存数据库(如redis)中每隔5分钟缓存一些繁重查询的结果
  • 我想将这些操作分为两个应用程序。HTTP服务器应为主服务器。第二个应用程序只是一个从应用程序,可以生成尽可能多的实例

    主处理器将实现某种任务处理器,它只将任务分配给空闲的从属处理器。这个奴隶很笨。它可以报告其状态(空闲/忙碌和一些细节,如当前负载等)。您可以在从属服务器上启动任务。主机将负责排队任务等

    我想这是常见的服务器/代理模式

    所以我已经开始安装TCP服务器和客户端,但这样做的开销太大了。有点像重新发明轮子。所以我想我可以在我的客户机上使用一个HTTP服务器,它只有两个端点,比如

    [GET] /status 
    [POST] /execute/:task
    

    我在这里走对了吗;博士为主从架构滚动您自己的RESTAPI有一些缺点

    您的服务器/代理模式通常称为

    滚动您自己的RESTAPI可能会工作,但可能不是最优的。处理(例如),瞬时故障、轮询等可能会在正确处理之前带来很多痛苦

    图书馆/服务提供不同程度的便利:

  • REST-ful[HTTP]API的一个“缺点”是开销。这有关系吗?那要看情况了,这对手头的任务有关系吗?手工编写TCP处理程序(或发送的消息)是对轮子的再发明;这是一个通过许多不同的实现/方法解决的问题。当然,也有一些基本的差异需要考虑,例如TCP(一般)被用作长流连接,而HTTP请求通常是短时间的。(然后输入长轮询、WebSocket等)