对课程实现的分布式任务调度系统的适用业务的疑问
来源:2-1 原理介绍
破障
2020-01-29
这个系统是否适用于以下业务:
- 延迟任务,比如:下单15分钟内不完成支付的订单的取消。此类型的功能是否可以使用这个分布式任务调度系统去实现?此系统是否是实现延迟任务的推荐方式?技术上来看是可以实现的:使用crontab表达式表示这个延迟任务的执行时间,执行一次后删除job。我知道目前一些其它实现延迟任务的方式是使用消息队列组件的延迟消息、轮询Redis Sorted Set。
- 按一定的时间周期(每天、每周、每月)重复执行的任务,这个系统很明显能完美满足此类业务需求。我的疑问是这个系统面对大数据量的job(比如百万job、千万job)会不会有问题。如果每次都要获取到所有的job列表,workers跟etcd之间带宽会成为瓶颈,每个worker只会执行其中一部分job也意味着worker会拿到很多无用的数据;如果分页获取job列表,多个worker之间应该要实现分布式分页吧?
- 课程中job的command是执行简单的bash命令,不知以下的扩展在工程上是否是合理的方式:将job的command扩展成一个json数据,此json数据描述一个业务,比如订单业务,包含订单ID、下单时间、到期不支付的自动取消订单的时间,worker负责将此到期的订单取消。想听听老师根据自己丰富的经验角度给出的答案。
写回答
1回答
-
小鱼儿老师
2020-01-29
1)延迟任务有2个主流选型:a)rabbitmq b)rocketmq
2)量级的差异必然导致架构的差异,百万/千万级还需从长计议。
3)像你说的一样,延迟队列是一种更主流的方案,扫表发现过期订单进行状态修正也是正常操作。
00
相似问题