我相当精通Node.js编程范例,用于异步,事件驱动,无阻塞编程模型。我现在正在尝试了解我可以在虚拟机的云计算生态系统中扩展使用Node.js的程度。
在Web仪表板的服务器端,我将Node.js作为http服务器运行并与Cassandra数据库进行交互。用户通过浏览器仪表板与我们的云服务进行交互。在客户端和服务器之间打开的Websocket将允许服务器端将动作启动到用户的仪表板中。
用户的任务活动的一部分将是产生基于云的虚拟机以进行工作流活动。这些VM将执行需要与系统主Cassandra数据库进行交互的应用程序。
我非常想对以下Node.js体系结构场景有一些反馈:
当用户生成虚拟机时,将使用在VM上运行的Node.js实例启动VM。这VM的Node.js的情况下积极地开辟了系统的主Node.js的实例网络插座运行或分配(或许还有可与卡桑德拉数据库进行通信的多个实例的Node.js)这个VM,即一个节点-从VM的Node.js实例建立to-node 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的节点的DB记录的动作来监视/监听规定的事件。 js实例。
我在这里描述的是非典型且荒谬的情况吗?在这种用例中,有没有更好的方法来使用Node.js?是否有更合适的组件配置?
亲切的问候,马克
WebSocket HTTP扩展的目的是允许与隐藏在防火墙后的Web浏览器进行双向通信。WebSocket取代了在常规HTTP请求之上自定义构建的拉取方案。
在您的情况下,仅通过发送常规REST请求使两个Node.js实例相互通信就更有意义。
另外,我将考虑仅使一个Node.js实例与数据库通信,并使所有其他实例通过数据库通信。这样,您将简化VM上Node.js的部署。此外,使所有数据都流经一台服务器将使调试复杂的业务逻辑变得更加容易。
使用WebSocket的另一个缺点是打开的连接很多。在大多数情况下,大多数情况下,您的大多数Node.js实例都处于休眠状态。与他们保持联系是没有意义的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句