我正在开发一个带有nodeJS的应用程序和带有多个工作人员的集群,每个工作人员都有不同的端口,我可能需要让工作人员相互通信,我知道nodeJS集群已经内置了对master和其他worker之间的消息传递的支持。
我有3个问题。 1。为了更快的过程,我可以在没有主人的工人之间发送消息吗?
最好在每个工作人员上打开一个websocket,以便从其他工作人员那里听取替换群集中的内置消息,是否更快?
如果应用程序扩展到多个服务器,我认为websocket将是答案,任何替代方案请建议吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
IPC。
每个NodeJS子进程(以fork开始)具有;WITH cte AS (
SELECT '["' + REPLACE(COALESCE(d.StringValue,''),'^','","') + '"]' AS [JSONValue]
,ROW_NUMBER()OVER(ORDER BY d.StringValue) AS [ID]
FROM #Data d
)
SELECT NULLIF(a.value,'') AS [Value]
FROM (
SELECT j.value,ROW_NUMBER()OVER(PARTITION BY c.ID ORDER BY j.[key] DESC) AS [rn]
FROM cte AS c
CROSS APPLY OPENJSON(c.JSONValue) j
) a
WHERE a.rn = 1
;
方法。并且可以侦听来自父母的消息。如果需要,可以随意传递对象。它将被字符串化并在另一侧进行解析。
process.send(<data>);
当您在父端分支进程时-它也具有消息传递方法。
process.on('message', (data) => {});
如果要使工作人员/孩子之间相互通信-您可以通过向主服务器发送特定消息来进行管理,然后主服务器会将其转发给指定的工作人员。