storm(二)
1.task
IBolt中间节点,每个bolt下都有一个IOutputCollector,用于真正处理emit的数据,IOutputCollector通过Context下的连接将数据发往下游,并接收ack消息,ack消息会最终被发往spout。
2.state
定义了状态接口,和IStateSpout接口,IStateSpout用于定时出发checkpoint,主要是在有节点重启的情况下恢复state,state可以有很多种形式,StateProvider就是其中一种。StateProvider接口用于创建state对象,
3.topology
定义了很多IBolt的子接口,包括IStatefulBolt用于状态处理。TopologyBuilder用于手动构建topology,这里还定义了InputDeclarer,用于描述一个计算节点的输入来源和group的方式
storm一个服务的启动过程就是提交topology到集群调度器,调度器根据资源情况选择可执行的topology,每个节点启动一个work,work中执行spout或者bolt,
4.windowing
定义了window的触发策略和剔除策略EvictionPolicy已经TriggerPolicy,策略用于决定当前数据是否留在当前window中,如时间窗口的策略就是通过水印策略实现。policy判断每一条数据是否达到触发条件,当达到触发条件时会通过TriggerHandler,将window内的tuple收集成windowTuple,然后执行agg,
5.trident
定义了Stream对象,可以通过Stream的Node方式构建topology,Stream通过opreation下定义的操作,来构建node,这些node最终会生成一个拓扑结构,这个拓扑结构可以转换成Storm可执行的topology,opreation下定义的操作包括filter,map还有window用到的一些agg操作,
6.scheduler
主要定义了storm的调度类,IScheduler,工作节点信息Node,拓扑信息TopologyDetails,已经slot的信息,workerslot,调度器首先根据拓扑信息计算出需要用到的slot,然后根据slot来获取节点,然后通过cluster完成拓扑的调度。