- 若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微批量消费数据
- 高频幂等
网友评论