我可能会错过一个明显的伎俩,但……
无论如何,2 node.js进程是否以有状态的方式交换消息?
举个例子:
进程A是一个HTTP服务器,它对传入的外部http请求进行记录,以满足从进程B或C获取信息所需的这些请求.目前我有’A’为每个’B’或”请求打开TCP / IP连接C’正在侦听合适的端口.
这看起来非常糟糕,很多开销,因为每个请求都需要很多开销才能打开套接字并关闭它,但是如果没有为每个请求打开一个套接字,我就看不到确保来自“B”或“C”的响应的方法’绑定到正确的HTTP响应.
所有进程都在nodejs中,B C具有较长的启动时间(30秒),因此每个请求产生它们不是一个选项.所有进程当前都在同一个盒子上运行(双核心).
在协议方面,我使用的是基本的’net‘服务器,如nodejs文档中所述,并在其上投掷文本.
任何建议等都乐意接受
最佳答案 您可以选择将唯一会话ID(应用服务器/自身生成)作为邮件的一部分(在流程A< – > B / C之间)&或许在会话ID附加一个计数器(在会话ID和计数器之间有一个分隔符)来跟踪请求.计数器将在每个新请求上递增.我相信你可以使用更好/更简单的选项.
对于进程间消息传输,可以查看内存中的缓存(例如redis / memcached等)或使用消息服务器(如ZermoMQ / RabbitMQ等)(您也可以使用Redis进行队列/ pub-sub消息传递).您还可以选择避免使用邮件服务器和只需在节点内使用hook.io或net / tcp进行消息传输.
希望能帮助到你.