zoukankan      html  css  js  c++  java
  • Node多进程相关

    现状:

      目前使用child_process.fork实现多进程,一个center.js负责任务分配及相关状态管理,一个worker.js负责任务执行。

      center.js结构:

      1) 一个task_queue变量保存不同worker所需的数据

      2) 一个run函数生成多个worker并分配数据。这里需要考虑worker串行执行或并行执行,串行执行是因为有时候跑多个worker时访问公共资源(如MongoDB且数据量特别大TODO1:这里应该要使用数据库切分)会相互影响执行速度。实际上串行执行也称不上是多进程了。

      3)一个dealMessage函数处理worker返回的message

      worker.js结构:

      1)数据库连接,关键变量初始化

      2)fillQueue

      3)runQueue

      4) 各种处理函数

      5) exit函数处理错误以及返回

    收获:

      1)日志的处理

      2)多进程特别是需要跑很久的程序需要良好的错误恢复机制

    TODO:

      TODO2:每个worker.js相当于独立进程,无法通过center.js进行管控,比如:干掉center.js,worker.js还在跑,目前的方法是写了个Bash脚本来Kill掉失去控制的worker.js

      TODO3: 如何让所有worker.js共享一个大字典

  • 相关阅读:
    安全模式下卸载windows installer打包的软件(转)
    OAF页面集成条形码或者二维码
    记一次客户生产环境供应商门户服务器无法访问
    QML显示圆形图片
    QML加载gif
    QML之信号与槽
    QML访问C++类内部
    QML使用C++对象
    C++条件变量
    C/C++程序所占用内存区域
  • 原文地址:https://www.cnblogs.com/cqq626/p/6536505.html
Copyright © 2011-2022 走看看