文档章节

Storm【Storm0.9.3】- ACK 框架有意的补充

止静
 止静
发布于 2014/11/19 18:50
字数 627
阅读 247
收藏 0

  之前对于Storm的Acker机制进行了一些数学上的描述。 

   在这里,对于Storm的Ack机制 在源码实现上进行一些有意的补充。  


1: 在Ack框架的设计之中,Storm发射出去的消息都会对应于一个随机的消息ID号。


2 : Spout发射消息之后。将像Acker Bolt发射一个消息,这个消息的内容为 《RootID,消息ID》 Acker Bolt将会为该消息创

建一条跟踪项


3: Bolt产生要发射的消息的过程之中,也会将该消息ID发射Acker Bolt,AckerBolt 对消息ID进行异或以后进行存储。


4: Bolt在对于输入的消息进行Ack的过程之中,也会将该消息ID发射到 AckerBolt,Acker Bolt对于消息ID进行亦或以后再存储,由于该消息在被发射之时,已经向Acker Bolt发射过了ID,之后在被Ack 时又再次发射该消息ID,一句 【与或】的语义,这相当于对于该消息的跟踪的结束。

5:Acker Bolt 在更新某一个消息的跟踪值时,若发现他的值变为0,那么就会像Spout节点发射消息,表名,Spout发射的这条消息已经被成功的处理 。


6:所有消息的消息ID 都将更新到最  根上( /root ) 树上的,根消息为Spout发射出去的消息,Bolt新产生的消息并不会被单独跟踪


7:如果你在发射的过程之中,没有指定用于消息跟踪的ID,那么系统就不对消息进行跟踪,若系统中不含有Ack bolt,消息也不会被跟踪。


8: Spout的每条消息以及该消息所演化出来的消息的跟踪 容量负载为:《16个字节》,8个字节的根消息ID,以及8个字节的消息跟踪值《AckValue》,  事实上,由于Storm中采用的是HashMap对其进行的跟踪,在32位的JVM之中,每条消息至少需要20个字节的额外负载,故有一条消息的跟踪需要 40个左右的负载。


   具体的代码实现分析,可能需要 Cloujre的分析基础,如果您有兴趣,亲个参考本ID的其他系列:  

     Storm【Storm0.9.3】- 源码分析:ACK 框架之 Acker Bolt的实现分析 

© 著作权归作者所有

止静
粉丝 122
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
Storm【技术文档】 - Storm的Acker机制

基本概念的解析 对于Storm,有一个相对比较重要的概念就是 "Guarantee no data loss" -- 可靠性 很明显,要做到这个特性,必须要tracker 每一个data的去向和结果,Storm是如何做到的 -》 那就...

止静
2014/06/23
674
0
Storm概念讲解和工作原理介绍

Strom的结构 Storm与传统关系型数据库 传统关系型数据库是先存后计算,而storm则是先算后存,甚至不存 传统关系型数据库很难部署实时计算,只能部署定时任务统计分析窗口数据 关系型数据库重...

张超
2015/04/26
2.9K
0
IRichBolt和IBasicBolt/BaseBasicBolt对比

对于spout,有ISpout,IRichSpout,BaseRichSpout 对于bolt,有IBolt,IRichBolt,BaseRichBolt,IBasicBolt,BaseBasicBolt IBasicBolt,BaseBasicBolt不用每次execute完成都写ack/fail,因......

cjun1990
2014/12/25
4K
0
Apache Storm 1.0.5 发布,分布式实时计算

Apache Storm 1.0.4 已发布,Apache Storm 是一个免费开源的分布式实时计算系统。简化了流数据的可靠处理,像 Hadoop 一样实现实时批处理。Storm 很简单,可用于任意编程语言。Apache Storm ...

王练
2017/09/16
883
5
Storm 和JStorm

关于流处理框架,在先前的文章汇总已经介绍过Strom,今天学习的是来自阿里的的流处理框架JStorm。简单的概述Storm就是:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变...

止静
2014/08/30
9.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

Java中的原生关键字是什么?

在玩这个谜题 (这是Java关键字琐事游戏)时,我遇到了native关键字。 Java中的native关键字用于什么? #1楼 实现本机代码的函数被声明为本机。 Java本机接口(JNI)是一个编程框架,使在Jav...

技术盛宴
今天
54
0
博通与苹果达成150亿美元协议,覆盖未来3年苹果产品

  据外媒报道,芯片供应商博通(Broadcom)宣布已与苹果公司签署了一份协议,为其提供“高性能的无线组件和模块”,博通表示,这些芯片将在未来 3 年半的时间内用于自 2020 年 1 月份以后发...

水果黄瓜
今天
95
0
《算法》笔记 17 - 数据压缩

读写二进制数据 基因组数据的压缩 游程编码 位图 霍夫曼压缩 前缀码和单词查找树 构造前缀码的单词查找树 写入和读取单词查找树 使用前缀码压缩 使用前缀码展开 LZW压缩 LZW的单词查找树 LZ...

zhixin9001
今天
55
0
#技术分享# 再论DDD之【实体】建模

2020年春节第一天,早早醒来,出去晨跑一下,目前武汉以及周边的疫情处于红色报警状态,今年春节宅家是最安全的做法。闲暇之余,还需要探索技术,跑步中忽然想到了【忒修斯之船】的小故事,感...

边缘行者
今天
88
0
工作自由--2020年开篇,开启一个项目:工作自由 worksolo.cn

新年伊始,我突发奇想,也是很多人敢想而不敢做的事情,下面我以一个多年软件开发从业者的角度去思考,去设计这个项目,当然希望看到这篇文章的你可以给我更多思路: 项目名称:工作自由 域名...

_aron_
今天
51
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部