# nodejs_cluster_compute **Repository Path**: php08/nodejs_cluster_compute ## Basic Information - **Project Name**: nodejs_cluster_compute - **Description**: 弥补nodejs在密集型计算上的缺陷 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2018-06-06 - **Last Updated**: 2021-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nodejs_cluster_compute 众所周知,nodejs优势在于`单线程` `异步` `并发` `回调(好吧 这是我个人认为的优势)`。 但是正如网上nodejs开发工程师所说 `nodejs成也异步,败也异步` 。因为他在计算大量密集型计算的时候,往往发生难以想象的各种意外的阻塞。这时候nodejs只能等待其完成,才能处理下一个请求。 为了弥补nodejs在密集型计算上的缺陷。我们无外乎以下几种做法 * 将同步的密集型计算,强制性的弄成`异步回调`的方式 * 利用nodejs的cluster在需要的时候,新建一根线程。 交给他来计算。完成后利用`process线程间事件通信机制`来告诉我们,已经计算ok * 大名鼎鼎的`rabbitMQ` `np`模式。 简单粗燥的理解为 * 在启动node的时候,就建一个线程,同步跑。 * 该线程循环从数据库读取任务,有任务执行。 * 使用方只需要只需要向任务队列中添加任务。 * 等待任务被执行,并接受计算结果。 大家可以看到上面几种方式,无外乎都是将`同步密集型计算` ===> `异步回调无阻塞` 的基本理念。 这里暂时只给出了前两者的代码,第三种方法依赖太多。以后慢慢增加吧! TODO: * 补充单元测试 * 增加第三种方式的优化实现