美文网首页Node.js
node.js 调度式离线任务处理

node.js 调度式离线任务处理

作者: 死鱼 | 来源:发表于2018-11-06 22:58 被阅读49次

引言


随着web应用盛行于世(早就),node.js迅速成为当前最为流行的web应用搭建工具之一,他在各方面有明显的说烂了的优点,例如异步、非阻塞、事件驱动等,在高并发分布式的业务场景中有着十分明显的优势。

但node.js在服务端离线任务处理上仍然比较鸡肋,主要原因可能是由于工具本身的限制,例如单线程无法发挥多核性能、脚本弱类型容易产生BUG、开发过于简单以至于对开发人员难以把控等等,以至于大型团队在选择工具时都不会把node.js列入考虑范围内。

本文主要介绍一个个人开发使用的node.js分布式集群平台工具,主要适用于以下场景:

1、高并发且任务量巨大的场景 

2、需要无脑扩容、压榨硬件设备的场景

3、僵尸网络,小算力设备场景

# 普通业务请使用RabbitMQ,本情怀工具纯粹学习探索记录。

#借个图 留水印

架构简介


        这里基本仿照了消息订阅模式,稍有不同的有:

1、特殊消息发送方能给全部worker动态更新脚本

2、mq server(图中的master)会根据worker的负载情况传递任务消息

实现方案


1、解耦:

主要使用task queue来把消息进行解耦,由mq server(图中master)实现。

2、通信

目前使用TCP+JSON。

3、业务逻辑

Node.js脚本负责业务逻辑开发。

4、失败任务处理

由mq serer(图中master)捞回队列

运行演示


任务逻辑模块 消息发送模块 单机效果图

一些坑


由于worker非常不稳定,容易崩溃导致任务失败却没回调给mq server,以至于状态一直都是“进行中”,后来给mq server加了定期把“进行中”任务加入失败队列中。

Gayhub&联系


https://github.com/stevewooo/common 尽量使用最新的release分支。

邮箱:stevewoo23@gmail.com

学生党求撩

相关文章

网友评论

    本文标题:node.js 调度式离线任务处理

    本文链接:https://www.haomeiwen.com/subject/nzjpxqtx.html