1 Storm的通信机制

说明:1、worker与worker之间跨进程通信;
2、worker内部中各个executor间的通信,Task对象--->输入队列queue--->执行--->输出队列

1.1通信机制的流程图

1.2通信机制的总结

a、每个task中都对应一个输入队列和输出队列;
b、一个worker中所有的task的输入队列被封装在一个InnerMap<TaskId,InputQueue>中;
c、当上游的Component组件需要发送数据时,就会拿TaskId去InnerMap中获取相应的输入队列,
此时有两中情况:
①:如果InputQueue不为空,表示数据要发送task在当前的worker中,直接获取对应的InputQueue进行push;
②:如果InputQueue为空,就需要走网络通信。走网络通信需要知道对方的Ip和端口号,在Worker初始化了一个ConnectionMap<Supervisor Ip+worker端口号,NettyClient>对象。通过TaskId找到这个task运行在那个worker上,用对应的superivsor ip+worker端口号获取一个netty连接,进行数据传输;
注:nettyClient数据传输模块在每个task中都有一个。
d、NettyServer收到数据之后,会按照每个数据要发送的TaskId进行分发,分发到一个反序列化队列中;
e、在Task初始化的时候,会创建一个线程来消费TaskId对应的反序列化队列中的数据,并存放到对应task的InputQueue的队列中。
注:上述所说的taskId和taskId与worker之间的对应关系,在nimbus分配任务已规划完毕。

1.3通信机制的队列简单描述

 队列是DisruptorQueue(无锁队列),每秒中能处理600万订单,是由LAMX的公司开源

Storm学习笔记六的更多相关文章

  1. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  2. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  3. Storm学习笔记 - 消息容错机制

    Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...

  4. Storm学习笔记 - Storm初识

    Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  7. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  8. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  9. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

随机推荐

  1. 老问题:Android子线程中更新UI的3种方法

    在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handle ...

  2. C#中Form窗体中读取EXCEL的数据

    使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可 首先引用Microsoft.EXEL 代码如下: using System; using System.Colle ...

  3. Android ART

    这几天在做一个项目时需要在Android中使用OSGi框架(Apache Felix),于是在一个android 4.4.2 版本系统的某品牌的平板上实验.实验内容很简单:把felix包里的felix ...

  4. iOS 热更新插件

    1.JSPatch 平台 http://jspatch.com/Docs/intro 2.React Native 中文文档 http://wiki.jikexueyuan.com/project/r ...

  5. XML简单的增改删操作

    XML文件的简单增改删,每一个都可以单独拿出来使用. 新创建XML文件,<?xmlversion="1.0"encoding="utf-8"?> & ...

  6. L11,one good turn deserves another

    one good turn deserves another 礼尚往来 gets a good salary 有一份很好的薪水 never pays it back 从不归还 deserve  应得的 ...

  7. Android网络开发之Volley--Volley基本用法ImageRequest(三)

    1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...

  8. <c:foreach> 标签怎么获取循环次数?

    <c:forEach var="i" begin="1" end="9" varStatus="status"&g ...

  9. js 增删改查

    <html><head lang="en"> <meta charset="UTF-8"> <title>< ...

  10. Hibernate-----关系映射 重点!!!

    1. 关系, 指的是对象之间的关系, 并不是数据库之间的关系. 2. 简化问题: a) 怎么写annotation b) 增删改查CRUD怎么写 对象处于下列关系之一 (一对一, 一对多, 多对多)时 ...