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

我非常熟悉Node.js的asynchronous,事件驱动,非阻塞编程模型的编程范例。 我现在正试图了解在虚拟机的云计算生态系统中如何扩展Node.js的使用范围。

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

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

我非常希望对以下Node.js体系结构scheme有一些反馈意见:

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

VM的Node.js实例设置了一系列要在VM内部观察的事件。 系统的Node.js实例还从VM的Node.js实例中设置了一系列要监视的事件。 当虚拟机的Node.js实例事件触发完成后,启动并完成所需的Cassandra DB操作。 系统的Node.js实例还监视来自VM的特定事件,以启动Cassandra DB操作。

实际上,我在这里问的是: 在两个Node实例与同一个后端数据库交谈的情况下,通过websocketsbuild立Node.js-2-Node.js通信通道是否有意义?

在这个configuration中,似乎我能够build立一个高度灵活的双向虚拟机事件系绳,可以监视/监听来自系统的Node.js实例和VM节点的DBlogging动作的规定事件。 js实例。

我在这里描述的是一个非典型的和无意义的情景? 在这个用例中有更好的方法来使用Node.js吗? 有没有更适合的组件configuration?

亲切的问候,马克

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

在你的情况下,通过发送通常的REST请求使两个Node.js实例互相通信更有意义。

此外,我会考虑只让一个Node.js实例与数据库进行通信,并让所有其他实例通过它进行通信。 这样你将简化你的虚拟机上Node.js的部署。 另外,使所有数据stream经一台服务器将使debugging复杂的业务逻辑更加容易。

使用WebSocket的另一个缺点是有很多打开的连接。 在你的情况下,大部分的Node.js实例似乎都处于hibernate状态。 与他们保持联系没有意义。

不,不是的。

WebSocket协议只是有用的,因为它允许支持WebSocket与服务器应用程序通信的Web浏览器。 这不是特别有趣或有用的,不应该用于不涉及networking浏览器的通信。

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