OLTP On-Line Transaction Processing
OLAP On-Line Analytical Processing
在定时任务OLAP中,我们也需要做优化决策,最大吞吐量一次尽可能多的处理数据,而不是多次无止境的重试定时任务。
在平台化设计中,往往需要考虑低延迟,高吞吐的能力,实际上是对算法设计能力的挑战:
1、串行执行计算能力有限(单机)
2、并行执行提高吞吐量(单机):单机并行、单机聚合
3、分布式计算最大化吞吐量(联机):多机聚合
在一般的web项目中使用最多的是单机并行,这里我们为了定时任务更大化处理数据能力设计,我们需要多机聚合任务,大楷分为以下几步:
1、任务拆分,类似于elastic-job中的任务分片,比如有300w条数据需要处理,我们将100w以内的数据扔给tasknode1,100200w内的数据扔给tasknode2执行,200300w扔给tasknode3执行。
2、任务分配记录,以确保任务被哪台机器领去了
3、单机并发策略,如果机器是8核心的,我可以使用一个8核心线程的线程池并发执行
4、任务适配接口(单机),用于匹配不同的任务类型
5、任务处理流程
6、任务处理完成后,通知任务分配器(主任务节点)
7、主任务节点聚合流程
8、上一个任务分配、子节点执行完成、主任务节点聚合完成,则进行流转到下一个任务,可能是该任务后续操作,或者开始执行其他主任务。
在MapReduce中,任务的执行分为map和reduce阶段。在hdfs知道,hdfs有机架感知特性,故执行任务的时候可以获取最近的block进行处理,hdfs负责新数据的复制,从而处理的速度并不会变得很慢。