博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Storm【Storm0.9.3】- ACK 框架有意的补充
阅读量:7235 次
发布时间:2019-06-29

本文共 945 字,大约阅读时间需要 3 分钟。

hot3.png

  之前对于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

你可能感兴趣的文章
Windows 10不能正常打开开始菜单问题修复
查看>>
JFinal-layui v1.1 更新,极速开发企业应用系统
查看>>
部署WAR包实时查看Tomcat的状态和日志
查看>>
vex使用...mapActions报错解决办法
查看>>
胡捷:区块链是促进个体信任的“天使”,也是消减中心权利的“魔鬼”
查看>>
使用docker-compose快速搭建zookeeper集群
查看>>
TFC暨智能娱乐展乐相科技陈朝阳致开发者:为什么你要信任虚拟现实
查看>>
Linux中KVM虚拟机是什么
查看>>
「镁客·请讲」Lucia 焦玉龙:用区块链技术切入长租行业,Lucia要做长租领域的变革者...
查看>>
【加法笔记系列】逻辑门、半加器、全加器、波纹进位加法器
查看>>
递归基础思想
查看>>
通过组策略禁止有本地管理员权限的域用户更改网络配置
查看>>
git revert和reset区别
查看>>
Android内存优化2 了解java内存分配 2
查看>>
机器学习的入门逻辑回归
查看>>
“看脸”看不出花,但人工智能可以“看”出性格
查看>>
有了这四个“最”,AI或许可以成功预测地震
查看>>
三角阵
查看>>
Delphi2010中字符串汇编需要注意的一点,以及支持2010的AES加密库
查看>>
ExtJs 修改组件值方式
查看>>