在业务处理时,经常会存在待处理的业务数据,在处理这部分数据时,有如下的处理方式。
Worker模型:包含Worker处理类(Processor),调度处理框架,时间规则配置。
Worker处理类,待处理业务数据的处理类。
调度处理框架,根据时间配置的规则, 在指定的时间点内,调用worker处理类。
时间规则配置,设置worker处理类的启动时间以及频率。
优点:1.实现简单,现在有Spring和Quartz框架,直接配置好时间表达式之后以及处理器之后,就可以直接执行了。
2.各种Worker之间相互独立互补影响。
缺点:1.并行处理时(多Worker执行时),每个worker需要处理重复处理业务数据的问题,也就是并发的时候,会重复处理相同的数据。
2.并行处理时的性能要想获得并行数同样的效率就需要在worker里面进行算法优化处理。
3.每一种业务数据需要配置一个worker。
4.各种worker之间的性能不能共享,也就是多种worker各自管理各自的业务数据处理,即使有的worker空闲,也不能处理忙碌worker的数据。
任务(Task)模型:包括任务仓库,任务,任务处理类,任务管理器。
任务仓库,存储所有的任务。
任务,每一条待处理的数据生成一条任务数据,保存到任务仓库中,该任务保存待处理业务数据的主键。
任务处理类,根据任务中保存的主键,获取到业务数据,根据业务规则进行处理业务数据。
任务管理器,定期从任务仓库中获取到任务,根据任务的类型获取到任务的处理类进行处理任务。
优点:1.可以并行处理,任务管理器进行处理并发问题。
2.性能可以共享,任务之间也可以混合执行处理。
缺点:1.任务之间可能存在性能影响,也就是执行时间较长的任务长期占据了任务处理通道,导致别的任务处理较慢。