分布式任务(Worker)处理方案

以下分别给出了3种实现抢宝分布式Worker的方案,其中第3种方案,是种前两种方案的一个整合实现。

1. 方案1:服务化Worker设计

基于soa基础服务实现分布式worker,通用性强,扫描的worker只负责扫描待执行的任务做分发,具体的任务处理交给soa服务端任务处理线程池;目前的Worker配置策略保留,将现有的worker执行方式作为Soa服务化Worker执行流程的降级方法

1.1.部署图

1.2.处理流程图 ##

1.3. 设计优势

1)、Soa Server服务器无状态
2)、任务处理不存在Master/Slave,所有机器都能处理任务
3)、任务分发的负载均衡由soa客户端来处理
4)、可以配置服务的调用不跨机房网络
5)、任务扫描 Worker 服务器需要解决单点问题,可以考虑扫描的Worker实现Master/Slave模型
6)、该分布式Worker设计方案能适用于大部分的业务线。

2. 方案2:基于canal服务Worker设计

数据库接入canal之后,可以由canal直接发送任务表的binLog变化mq消息,业务系统订阅任务变更消息,根据消息体可以查询到待执行的任务;
若任务状态为待执行状态则路由具体的任务执行线程池,并将任务交由线程池处理;
若任务状态为执行成功状态则直接将mq消息消费并返回。

2.1.处理流程图

2.2. 设计优势

1)、服务器无状态
2)、不存在Master/Slave,所有机器都能处理任务
3)、任务立即执行的流程可以从业务代码中解耦
4)、对于时效性要求比较高的业务场景比较适合,任务处理

3. 方案3:分布式Worker设计

业务系统可以结合上面两种Worker的设计方案来实现分布式Worker

3.1.处理流程图 ##

3.2. 服务降级

该方案的服务降级可以分为两层降级:
1)、正常情况下依赖canal处理任务;
2)、若canal不可用依赖服务化扫描Worker;
3)、若soa服务不可用依赖常规的单机任务扫描处理任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值