JStorm基础问题

  • 若bolt的并发度为N(N > 1),则会有N个task来执行此component。那这些task是公用一个bolt实例,还是为每个task都创建一个bolt实例呢?
    答:从Task的创建过来看,每个task都会创建自己的bolt实例。
    com.alibaba.jstorm.task.Task
public Task(WorkerData workerData, int taskId) throws Exception {
    ...
    this.taskObj = Common.get_task_object(
                    topologyContext.getRawTopology(), componentId, WorkerClassLoader.getInstance());
    ...
}

com.alibaba.jstorm.cluster.Common

public static Object get_task_object(StormTopology topology, String component_id, URLClassLoader loader) {
        ...
        Object rtn;
        if (componentObject instanceof JavaObject) {
            rtn = Thrift.instantiateJavaObject((JavaObject) componentObject);
        }
       ...
       return rtn;
} 
  • 延时调度 / 窗口式调度 / 节拍式调度:若期望bolt的执行具有下列特点,可使用storm的定时任务来完成
    • bolt每次执行要有时间间隔
    • bolt微批量消费数据
    • 高频幂等

你可能感兴趣的:(JStorm基础问题)