内容简介:拓扑会通过 Nimbus 分发给 supervisor, 那么 Nimbus 内部是怎么操作的? 这里以本地模式为例, 对拓扑的提交过程做一个分析.参考资料:TODO …
拓扑会通过 Nimbus 分发给 supervisor, 那么 Nimbus 内部是怎么操作的? 这里以本地模式为例, 对拓扑的提交过程做一个分析.
参考资料: 理解storm拓扑并行度
疑问:
- 在zk上建立task信息,这些信息是用来做什么的?
- notifyTopologyActionListener 做了什么?
启动
TODO …
命令的入口
所有命令的入口, 都是由 ServiceHandler 实现的, com.alibaba.jstorm.daemon.nimbus.ServiceHandler#submitTopologyWithOpts.
- 配置校验
- 判断拓扑是否已存在/重名/重复提交
- 标准化conifg
- 标准化topology (finalize component’s task parallism)
- 校验topology结构
- 校验 bolt/spout 的id 和 name
- 校验 bolt 的输入是否为空
- 拷贝代码二进制文件到集群
- 在zk上建立task信息 (supervisor会持续监控保存在zk的任务)
- 为bolt/spout等创建对应的 TaskInfo (多并行度的bolt/spout会创建出多个TaskInfo) com.alibaba.jstorm.cluster.Common#mkTaskMaker
- 注意, jstorm 的 setNumTasks 其实是无效的, 只有 paralleism 并行度会起作用.(见 jstorm作者之一cody的回答: https://stackoverflow.com/a/34316700/6275014 )
- StartTopologyEvent.pushEvent,
- 然后会异步地去执行 com.alibaba.jstorm.daemon.nimbus.TopologyAssign#mkAssignment
- com.alibaba.jstorm.schedule.default_assign.TaskScheduler#assign: 将task分配给worker, 在这里做了一些定制化, 如有的task要求分配在不同的worker上等.
- 创建好 Assign 后, 会发布到 zk 上.
- 然后会异步地去执行 com.alibaba.jstorm.daemon.nimbus.TopologyAssign#mkAssignment
- notifyTopologyActionListener
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 以太坊源码分析(36)ethdb源码分析
- [源码分析] kubelet源码分析(一)之 NewKubeletCommand
- libmodbus源码分析(3)从机(服务端)功能源码分析
- [源码分析] nfs-client-provisioner源码分析
- [源码分析] kubelet源码分析(三)之 Pod的创建
- Spring事务源码分析专题(一)JdbcTemplate使用及源码分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。