/** * */ package com.taobao.top.analysis.node; import java.util.List; import java.util.concurrent.BlockingQueue; import com.taobao.top.analysis.config.MasterConfig; import com.taobao.top.analysis.node.job.Job; import com.taobao.top.analysis.node.job.JobMergedResult; import com.taobao.top.analysis.node.job.JobTask; import com.taobao.top.analysis.node.job.JobTaskResult; /** * 任务结果合并接口,用于提供不同方式的结果合并 * @author fangweng * @Email fangweng@taobao.com * 2011-11-28 * */ public interface IJobResultMerger extends IComponent<MasterConfig>{ /** * 用于Master的合并 * 合并某一个job的所有可以合并的结果,当前默认实现是多线程合并(主干只是单线程竞争合并) * @param job * @param 分支队列,支持多个线程同时合并,不需要等待主干合并结束顺序化合并 * @param 需要合并的结果集合 * @param 是否需要合并的时候处理一些lazy的内容(基于entry的再次计算) */ public void merge(Job job,BlockingQueue<JobMergedResult> branchResultQueue ,BlockingQueue<JobTaskResult> jobTaskResultsQueue,boolean needMergeLazy); /** * 用于Slave的合并 * 合并某一个Task的多个结果 * @param jobTask * @param jobTaskResults * @param needMergeLazy * @param needDeepMerge * @return */ public JobTaskResult merge(JobTask jobTask,List<JobTaskResult> jobTaskResults,boolean needMergeLazy,boolean needDeepMerge); }