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
在虚拟机和主web服务器中运行的Node.js实例_Node.js_Websocket_Socket.io - Fatal编程技术网

在虚拟机和主web服务器中运行的Node.js实例

在虚拟机和主web服务器中运行的Node.js实例,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,对于异步、事件驱动、非阻塞编程模型,我相当熟悉Node.js的编程范式。我现在正试图了解在虚拟机的云计算生态系统中,我能将Node.js的使用扩展到什么程度 在web仪表板的服务器端,我让Node.js作为http服务器运行,并与Cassandra数据库交互。用户通过浏览器仪表盘与我们的云服务交互。在客户端和服务器之间打开的WebSocket将允许服务器端启动用户仪表板中的操作 用户任务活动的一部分将是为工作流活动生成基于云的虚拟机。这些虚拟机将执行需要与系统主Cassandra数据库交互的应用

对于异步、事件驱动、非阻塞编程模型,我相当熟悉Node.js的编程范式。我现在正试图了解在虚拟机的云计算生态系统中,我能将Node.js的使用扩展到什么程度

在web仪表板的服务器端,我让Node.js作为http服务器运行,并与Cassandra数据库交互。用户通过浏览器仪表盘与我们的云服务交互。在客户端和服务器之间打开的WebSocket将允许服务器端启动用户仪表板中的操作

用户任务活动的一部分将是为工作流活动生成基于云的虚拟机。这些虚拟机将执行需要与系统主Cassandra数据库交互的应用程序

我非常想就以下Node.js架构场景获得一些反馈:

当用户生成虚拟机时,虚拟机由运行在虚拟机上的Node.js实例启动。VM的Node.js实例主动打开一个web套接字,其中系统的主Node.js实例正在运行或分配给该VM(可能有多个Node.js实例可用于与Cassandra数据库通信),即,从VM的Node.js实例建立一个节点到节点的websocket

VM的Node.js实例设置了一系列要在VM内部监视的事件。系统的Node.js实例还设置了一系列要从VM的Node.js实例监视的事件。当VM的Node.js实例事件被触发并完成时,所需的Cassandra DB操作将被启动并完成。系统的Node.js实例还监视来自VM的某些事件,以启动Cassandra DB操作

实际上,我在这里要问的是:在WebSocket上建立Node.js-2-Node.js通信通道,并且两个节点实例都与同一后端数据库通信,这有意义吗?

在这个配置中,我似乎能够设置一个高度灵活、双向的VM事件栓带,它可以通过系统的Node.js实例和VM的Node.js实例的DB录制操作来监视/侦听指定的事件

我在这里描述的是一个非典型的、荒谬的场景吗?在这个用例中,有没有更好的方法来使用Node.js?是否有更合适的组件配置

好心的问候,马克不,没有

WebSocket协议只有在允许支持WebSocket的web浏览器与服务器应用程序通信时才有用。除此之外,它不是特别有趣或有用,并且不应用于不涉及web浏览器的通信

使用正常的TCP套接字(使用模块)进行服务器到服务器的通信。

不,它没有

WebSocket协议只有在允许支持WebSocket的web浏览器与服务器应用程序通信时才有用。除此之外,它不是特别有趣或有用,并且不应用于不涉及web浏览器的通信


使用普通TCP套接字(使用模块)进行服务器到服务器的通信。

WebSocket HTTP扩展的目的是启用与隐藏在防火墙后面的web浏览器的双向通信。WebSocket取代了在通常HTTP请求之上定制的拉取方案

在您的情况下,通过发送通常的REST请求,让两个Node.js实例彼此通信就更有意义了

另外,我会考虑只使用一个No.js实例来与数据库通信,并使所有其他实例通过它进行通信。这样,您将简化在虚拟机上部署Node.js。另外,让所有数据流经一台服务器将使调试复杂的业务逻辑变得更容易


使用WebSocket的另一个缺点是有很多打开的连接。在您的情况下,似乎大多数时候Node.js实例都处于休眠状态。与他们保持联系毫无意义

WebSocket HTTP扩展的目的是启用与隐藏在防火墙后面的web浏览器的双向通信。WebSocket取代了在通常HTTP请求之上定制的拉取方案

在您的情况下,通过发送通常的REST请求,让两个Node.js实例彼此通信就更有意义了

另外,我会考虑只使用一个No.js实例来与数据库通信,并使所有其他实例通过它进行通信。这样,您将简化在虚拟机上部署Node.js。另外,让所有数据流经一台服务器将使调试复杂的业务逻辑变得更容易


使用WebSocket的另一个缺点是有很多打开的连接。在您的情况下,似乎大多数时候Node.js实例都处于休眠状态。与他们保持联系毫无意义

好的……这是有道理的。那么,您是否会从VM节点实例使用RESTify来启动对primary Node.js实例的REST请求?是的。只需向primary Node.js服务器发送一个REST请求。好的……这很有意义。那么,您是否会从VM节点实例使用RESTify来启动对primary Node.js实例的REST请求?是的。只需向primary Node.js服务器发送一个REST请求。