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

标签 node.js websocket socket.io

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

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

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

我非常希望获得有关以下 Node.js 架构场景的一些反馈:

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

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

实际上,我在这里问的是:通过 websockets 建立 Node.js-2-Node.js 通信 channel ,让两个 Node 实例与同一个后端数据库通信是否有意义?

在此配置中,我似乎能够设置一个高度灵活的双向 VM 事件系链,它可以通过来自系统 Node.js 实例和 VM 的 Node.js 实例的数据库记录操作来观看/监听指定事件。

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

亲切的问候,马克

最佳答案

不,事实并非如此。

WebSocket 协议(protocol)的有用之处仅在于它允许支持 WebSocket 的 Web 浏览器与服务器应用程序进行通信。否则它并不是特别有趣或有用,并且不应该用于不涉及网络浏览器的通信。

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

关于在虚拟机和主 Web 服务器中运行的 Node.js 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892586/

相关文章:

node.js - 在 gulp.watch 中过滤文件的最佳方法?

javascript - 弃用警告 : Collection#find: pass a function instead

Python websockets 发送到客户端并保持连接

python - 基本的 socket.io 应用程序不工作

IOS 应用程序无法通过 socket.io(SIOSocket) 连接到 sails.js 服务器

node.js - 使用 Jasmine 测试 Nodejs 中的事件

node.js - 连接到 AWS RDS postgres 数据库的 nodejs 错误

java - Java SSLSocket 和 HTML5 之间的通信

websocket - 如何有效地向应用程序中的选定用户发送推送通知?

node.js - Googlecloud 的 pub/sub、socket、ipc 等的区别