背景是在想如何在 cluster 多进程下如何进行单例模式已经数据共享
参考了很多文章,基本都是在单文件内进行的一次性通信。(国外又翻墙又不懂英文的....)
那么如果在请求之后,如何才能取到 Master 进程的数据呢。
最后还是没有做到将数据放在一个进程内存中,其他进程能随意访问(写出想法只为抛砖引玉)。
主要的代码展示和文件结构我写的是 get 请求,就用浏览器思维走一遍流程吧。
app.js
1.在启动服务的时候需要让主进程进行监听子进程。
主进程监听子进程的消息testController.js
2. 请求进来之后子进程将会发出消息,告诉主进程我要获取参数啦。
get 请求入口函数3. 主进程接收到之后,发现在自己的全局变量里面有要的数据就再发送给发送消息的子进程。(这里我想过直接获取子进程的 response 让主进程对请求进行响应,但是 response 里面有循环引用没法 stringify)。
主进程发送所需函数4. 子进程监听到有信息就将参数保存下来了。
子进程监听可以看出来我是直接将子进程的参数响应回去,异步的结果就是第一次没有参数,第二次获取到主进程的参数。
第一次请求 刷新一次的请求这样做只是将主进程的参数同步了一份到子进程.....
想了很久这样子无法实现想要的效果,就发片文章求助一下。
(入坑尚浅,望共同进步)
网友评论