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

  之前对于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的实现分析 

转载于:https://my.oschina.net/infiniteSpace/blog/346490

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值