我正在构建一个具有两个部分的Web应用程序。在一个部分中,它使用服务器与客户端之间的实时连接,而在另一部分中,它执行了一些CPU密集任务以提供相关数据。
在nodejs和python/java中实现实时通信。Nodejs服务器可以参与与另一台服务器的双工通信的最佳方式是什么?
对于基本解决方案,可以使用socket.io,如果您已经使用了它并且知道它的工作原理,则可以完成工作,因为它允许在客户端和服务器之间进行通信客户端可以是不同语言的不同服务器。
如果您想要具有其他选项和控件的更强大的解决方案,或者可以处理更高的流量吞吐量(尽管最终只是通过相对较慢的互联网发送它,这不是问题),则可以查看类似ØMQ(Zeromq)。这是一个消息队列,可为您提供更多的控制和许多不同的通信方法。
当您设置要么时,我建议使用您的CPU密集型服务器作为稳定端(服务器)和您的Web服务器作为客户端。假设您正在使用单个服务器来进行CPU密集型任务,并且正在运行多个NodeJS服务器实例,以利用Web服务器的多核。这简化了您的通信,因为您想单点连接。
如果您预见到需要多个CPU服务器,您将需要设置可以在多个Web服务器和多个CPU服务器之间路由的路由服务器,在这种情况下,我建议您学习额外的学习工作Ømq。
您可以使用提供的http.request方法在节点的代码中提出curl请求。http.Request方法还用于实现身份验证API。您可以将回调放在请求的成功中,当您以节点获取响应数据时,可以将其发送回用户。在BackGrount Java/Python服务器中可以利用Node的CPU密集任务请求。
i维护一个node.js应用程序,该应用程序在分布在2个服务器上的34个任务之间。
在您的情况下,对于Web服务器和应用程序服务器之间的通信,您可能会考虑MQTT。
我将MQTT用于这种通信。大多数语言都有MQTT客户端,包括Node/JavaScript,Python和Java。在我的情况下,我使用MQTT"主题"发布JSON消息,并且在发布时已注册订阅"主题"的任何任务都会收到其数据。如果您Google Google" Pub sub"," MQTT"one_answers" Mosquitto",您会发现很多参考和示例。蚊子(现在是Eclipse项目)只是可用的许多MQTT经纪人之一。Java编写的另一个非常好的经纪人称为Hivemq。
这是一个非常简单,可靠的解决方案,可以很好地缩放。就我而言,每天都有数百万条消息可靠地通过MQTT。
您必须寻找socketio
socket.io启用基于双向事件的实时双向通信。 它在每个平台,浏览器或设备上都可以使用,以相同的重点关注可靠性和速度。
插座传统上是大多数人的解决方案 实时系统是架构的,提供双向 客户端和服务器之间的通信渠道。