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