• Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程


    Supervisor由三个线程组成,一个计时器线程和两个事件线程.

    • 计时器线程负责维持心跳已经更新Zookeeper中的状态,还负责每隔一定的时间将事件线程需要执行的事件添加到其对应的队列中.
    • 两个事件线程分别负责与Nimbus同步任务和根据任务变化同步管理Worker进程.

    相关数据结构图:

     supervisor

    同步Nimbus的事件线程

    执行流程图:

    image

    方法原型:

    (defn mk-synchronize-supervisor [supervisor sync-processes event-manager process-event-manager])

    参数说明:

    Supervisor:supervisor-data对象。

    Sync-processes:mk-supervisor中定义的用于同步当前supervisor启动的Worker的方法。

    Event-manager:mk-supervisor中定义的用于运行mk-synchronize-supervisor方法的线程。

    Process-event-manager:mk-supervisor中定义的运行sync-processes方法的线程。

    方法说明:

    1. 获取supervisor中的配置信息,storm-local-cluster,isupervisor和local-state对象.
    2. 定义sync-callback方法,将mk-synchronize-supervisor方法再次加入到Nimbus任务的事件现场中执行,该方法用来在进行Zookeeper操作时设置回调方法,当Zookeeper中的内容发送变化时也会调用该方法.
    3. 调用read-storm-code-locations方法获取<storm-id,master-code-location>集合保存到storm-code-map.
    4. 调用read-downloaded-storm-ids方法获取当前已经下载Topology对应的storm id信息.
    5. 调用read-assignments方法获取分配给当前Supervisor的任务信息,返回<poer,LocalAssignment>集合保存给new-assignment.
    6. 调用assigned-storm-ids-from-port-assignments获取new-assignment中的storm-id,保存到assigned-storm-ids.
    7. 获取local-state中保存的LS-LOCAL-ASSIGNMENTS信息做为existing-assignment,<port,Assignment>.
    8. 调用download-storm-code下载当前已经分配给该Topology但还没下载到本地的Topology信息.
    9. 计算出属于existing-assignment但不属于new-assignment的端口信息,调用isupervisor的killedWorker方法关闭这些端口。
    10. 调用isupervisor的assigned方法设置新分配的端口信息.
    11. 更新local-state中保存的LS_LOCAL_ASSIGNMENT信息,设置为new-assignment.
    12. 更新supervisor-data中的curr-assignment信息,设置为new-assignment.
    13. 移除本地已下载但已不在assigned-storm-ids中的Topology.
    14. 将sync-process方法添加到process-event-manager中执行.
  • 相关阅读:
    罗尔定理、微分中值定理、广义微分中值定理
    高等数学和数学分析教材推荐及其学习方法浅谈
    音视频下载插件 安装及使用
    win10台式机rtl8188eu(FW 150 UM V2.0)无线网卡无法连接wifi(无法连接到这个网络)
    django模板中的extends和include使用方法
    wordpress中文目录出现“有点尴尬诶!该页无法显示"
    wordpress迁移后登陆时出现Forbidden You don’t have permission to access /wp-login.php on this server
    centos设置开机自启动脚本
    hexo的jacman主题设置语言为英文后偶尔出现中文
    安卓QQ聊天记录导出、备份完全攻略
  • 原文地址:https://www.cnblogs.com/jianyuan/p/4802183.html
Copyright © 2020-2023  润新知