我这篇不是正统意义的生产者消费者,只是我自己对一般离线任务解决的框架,主要是解决一些非实时的数据需求;
生产者消费者都不是常驻内存,都是每个时间周期来操作,dump可能是一天,其他可能是秒级别:
生产者:
1. dump全库
2. select想要的数据文件,生成pack包
消费者:
按业务流图:
1. merge,合并基准文件、pack包、状态包,生成新的基准文件,执行失败也会有状态包
2. 过滤执行时间超过1天的任务,并杀死相关进程
3. 查看当前启动的执行进程数n
4. 启动10-n个进程,按时间先后或者优先级执行子任务,并更新对应任务状态和启动时间
5.生成新的基准文件,如果没有修改,则不处理;
子任务:
1. 执行任务
2. 执行完毕后增加对应状态的状态包
3. 更新数据库
重新启动:
1.杀死所有子任务
2. 增加状态包为执行失败
启动:
1. 将所有正在执行的任务设置为执行失败,重新进入队列排队