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微批量消费数据
    • 高频幂等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容