考虑到scailabilbity,原有ETL引擎由于Task任务直接负责了数据库的读写,导致抽取多个抽取结果无法聚合。也就导致了单个任务无法在多个ETL Server中并行运算,可扩展性较差。因此,有必要把任务的委派,结果集的合并工作独立开来,形成单独的模块。
首先,Task类不再直接操作数据库读写,而是把数据从一处抽取,发送到数据聚合处理模块,形成多个数据源的合并。Task类依然保持其最小操作单元,但多个Task的结果可以合并,多个Task可以合成一个组合Task。
其次,需要增加ETL Server管理模块,需要监控各个ETL Server的运行状态,任务队列状态,从而更好的调度,分配Task任务。同时,需要在ETL Server中加入心跳功能,以检测ETL Server是否运行正常。
第三,ETL Server管理器,ETL Server,ETL结果合并器等模块之间通过消息机制进行通信,以避免串行操作造成的阻塞。
第四,需要加入JTA事务处理模块,以防止结果集合并错误。