JStorm 源码分析 - tuple 在整个拓扑中的流转过程

栏目: 编程工具 · 发布时间: 5年前

内容简介:介绍 JStorm 时, 如果上来就直接贴大段大段的源代码, 那我觉得还不如不看. 这种行为就像是让盲人去摸:elephant:, 难以窥见整个系统的全貌.所以这里先丢一张图, 毕竟图总比文字更有表现力.

JStorm 源码分析 - tuple 在整个拓扑中的流转过程

介绍 JStorm 时, 如果上来就直接贴大段大段的源代码, 那我觉得还不如不看. 这种行为就像是让盲人去摸:elephant:, 难以窥见整个系统的全貌.

所以这里先丢一张图, 毕竟图总比文字更有表现力.

JStorm 源码分析 - tuple 在整个拓扑中的流转过程

这个图上画的是一个 tuple 在各个组件之间的流转过程, 主要涉及到的有三个队列:

  • deserializeQueues 待反序列化队列
  • innerTaskTransfer 待task消费队列
  • serializeQueue 待序列化队列

线条代表了 tuple 被处理后流动的方向.

我们的 tuple 被 Spout/Bolt 所 emit 之后, 就一辈子都在这三个队列当中兜兜转转^_^.

当我们的 task (bolt/spout) 发送一个 tuple 时, 自然是希望这个 tuple 被下一个 task (bolt/spout) 所消费, 但是下一个 task 可能被分配在同一个 worker 当中, 也可能是在另一台机器的另一个 worker 当中.

如果是另一个 worker , 那么 Collector 会将 worker 放入到 serializeQueue (待序列化队列), 有专门的线程会消费这个队列, 然后将消息发送到另一个 worker . 如果是同一个 worker , 那就没这么费事了, 直接丢到 innerTaskTransfer (待task消费队列) 就完事儿了! 那么 deserializeQueues (待反序列化队列) 又是做什么的呢? ^_^ 另一个接收到消息的 worker, 当然是需要反序列化收到的消息, 然后让 task 去消费啦, 那么这些刚接收到的消息, 都存在这个队列里面.

下面这张图画出了tuple 的反序列化/序列化/消费/网络传输所涉及的组件: TaskReceiver, TaskTransfer, Task, NettyClient, NettyServer

JStorm 源码分析 - tuple 在整个拓扑中的流转过程

TODO 待更新

JStorm 源码分析 - tuple 在整个拓扑中的流转过程


以上所述就是小编给大家介绍的《JStorm 源码分析 - tuple 在整个拓扑中的流转过程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

怪诞行为学2

怪诞行为学2

[美]丹·艾瑞里 / 赵德亮 / 中信出版社 / 2010-1-9 / 42.00元

《怪诞行为学2:非理性的积极力量》编辑推荐:尝试用“非理性”的决策方式,彻底颠覆工作和生活中的“逻辑”,你将获得意想不到的成就感与幸福感!畅销书《怪诞行为学》作者卷土重来,掀起新一轮“非理性”狂潮。 《写给中国人的经济学》作者王福重、著名行为经济学家董志勇倾情作序。 诺贝尔经济学奖得主阿克尔洛夫、《免费》作者安德森高度评价。 《纽约时报》《哈佛商业评论》《波士顿环球报》等全球顶级......一起来看看 《怪诞行为学2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具