1 Star 2 Fork 3

_rambo / nodejs_cluster_compute

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README.md 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
_rambo 提交于 2015-08-03 09:18 . first

nodejs_cluster_compute

众所周知,nodejs优势在于单线程 异步 并发 回调(好吧 这是我个人认为的优势)

但是正如网上nodejs开发工程师所说 nodejs成也异步,败也异步 。因为他在计算大量密集型计算的时候,往往发生难以想象的各种意外的阻塞。这时候nodejs只能等待其完成,才能处理下一个请求。

为了弥补nodejs在密集型计算上的缺陷。我们无外乎以下几种做法

  • 将同步的密集型计算,强制性的弄成异步回调的方式

  • 利用nodejs的cluster在需要的时候,新建一根线程。 交给他来计算。完成后利用process线程间事件通信机制来告诉我们,已经计算ok

  • 大名鼎鼎的rabbitMQ np模式。 简单粗燥的理解为

    • 在启动node的时候,就建一个线程,同步跑。
    • 该线程循环从数据库读取任务,有任务执行。
    • 使用方只需要只需要向任务队列中添加任务。
    • 等待任务被执行,并接受计算结果。

大家可以看到上面几种方式,无外乎都是将同步密集型计算 ===> 异步回调无阻塞 的基本理念。

这里暂时只给出了前两者的代码,第三种方法依赖太多。以后慢慢增加吧!

TODO:

  • 补充单元测试
  • 增加第三种方式的优化实现
NodeJS
1
https://gitee.com/_rambo/nodejs_cluster_compute.git
git@gitee.com:_rambo/nodejs_cluster_compute.git
_rambo
nodejs_cluster_compute
nodejs_cluster_compute
master

搜索帮助