现状:

  目前使用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共享一个大字典

Node多进程相关的更多相关文章

  1. node多进程

    内容: 1.多进程与多线程 2.node中多进程相关模块的使用 1.多进程与多线程 多线程:性能高:复杂.考验程序员 多进程:性能略低:简单.对程序员要求低 Node.js中默认:单进程.单线程,但是 ...

  2. node多进程的创建与守护

    node是单线程运行,我们的node项目如何利用多核CPU的资源,同时提高node服务的稳定性呢? 1. node的单线程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系 ...

  3. node 调试相关

    #0 node 正确的书写方式 为了防止后面出现混乱的各种书写,先来了解一下如何正确书写 node 的名称. 下面使用来自@bitandbang 推文中的图片展示如何正确书写 node 名称. nod ...

  4. Node.js 相关资料网站汇总

    地址:https://cnodejs.org/ nodejs中文网:http://nodejs.cn/ nodejs中文网:http://www.nodejs.net/ 相关API地址:http:// ...

  5. Node.js相关——package概念及NPM

    1. package 包 CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具.CommonJS的包规范由 包结构 和 包描述文件 两个部分组成. 1.1 包结构 包实际上就 ...

  6. node.js相关

    node node最大的特点是单线程,因此一个只能有一个任务运行,大量采用异步操作. 某一个任务的后续操作一般采用回调函数的形式 var callback = function (error, val ...

  7. node一些相关

    1.Node node的核心语言是JavaScript ,基于Google的V8引擎. 2.node使用 找到当前文件所在目录 node  文件名.js 直接用绝对路径 在当前目录打开命令窗口 3.n ...

  8. Node.js相关——CommonJS规范

    1. CommonJS规范产生背景 在后端,JavaScript的规范远远落后并且有很多缺陷,这使得难以使用JavaScript开发大型应用.比如: 没有模块系统 标准库较少 没有标准接口 缺乏包管理 ...

  9. Node 多进程并发控制小模块 - lockman

    介绍 lockman 是一个用于多进程的并发控制锁, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程中断.它可以把一段代码定义为互斥段(critical ...

随机推荐

  1. mysql与sql server参照对比学习mysql

    mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...

  2. android 布局属性详解

    Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料. 第一类:属性值为true或falseandroid:layout_centerHrizontal ...

  3. [转]c# 画图中bitmap类处理出图片时,存储的注意事项

    今天查找以前写的画图程序,想完善一下,发现 图片添加文字水印时候会有些模糊,特别是小字体的时候特别模糊, 经过一番调适,终于发现了问题 帖上代码,警示自己 System.Drawing.Image i ...

  4. NHibernate 配置增加代码感知

    Adding the Schema Include the schema in your Project, Solution, or Visual Studios XML Schemas folder ...

  5. org.springframework-jdbc

    Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate 博客分类: spring JDBCSpringSQL编程数据结构  今天看了下Spr ...

  6. 调试利器之tcpdump详解

    简介你执行 man tcpdump 命令,你会看到文档中对tcpdump的说明是“dump traffic on a network”.可见,tcpdump是一个根据使用者的定义对网络上的数据包进行截 ...

  7. h5打开App的方法。

    在浏览器中: 法1: location.href = `${scheme}`;//location跳转App是几乎所以情况都支持的. 法2: var ifr = document.createElem ...

  8. 通过自动回复机器人学Mybatis:代码重构(分层)

    imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 ListServlet.java package com.imooc.servlet; ...

  9. Apache 静态缓存配置

    静态文件缓存 静态缓存在客户端下进行缓存,可以设置缓存文件类型与缓存时间,提升客户端访问站点速度. 语法格式 ExpiresByType type/encoding “<base> [pl ...

  10. Android应用程序用真机调试步骤

    仅供参考: 1.开启调试模式     2.安装 Adb.exe 将platform-tools文件夹里面adb.exe AdbWinApi.dll AdbWinUsbApi.dll拷贝到tools   ...