storm-ACK的实现原理

异或运行基本原理

异或xor也叫半加运行,其运行法则相当于不带进位的二进制加法:

0 xor  0=0

1 xor 1 = 0

0 xor 1 =1

1 xor 0= 1

异或运行特性

1.交换律

 a xor b=b xor a

2.结合律

a xor (b xor c)= (a xor b) xor c

3.自反性

a xor a=0

a xor b xor b=a xor 0 =a
自反性即两个相同的数做异或运行结果为0; 而0 和另一个数据异或结果还是那个数。

可以用异或运行的自反性除去集合中偶数个的数。

storm的ack实现原理

Storm的Acker跟踪每个元组树(tupletree)校验和完成。每次一个元组被发射,对他的值起行异或运行并存到校验和中,每次元组被ack

时它的值被再次异或运算。如果所有元组已经成功ack,则校验和为0.

Storm的Ack框架实现过程为:在Spout 中系统会为用户指定的message id 生成一个对应的64位的整数,作为一个root id。root id被传递

给后续的Bolt作为该 消息的唯一标识。同是无论是Spout还是Bolt每次生成一个新的tuple的时候,都会赋予一个64位的整数id。Spout发

射完某个message id对就的源 tuple之后,会告知Acker自己发射的root id及新生成的tuple的 id.Bolt每次接收到一个输入的tuple处理之后

,也会告知自己处理的输入 tuple的id 及新生成的tuple的id .Acker对这些id做一个简单的异或运算,就能判断出该root id对应的消息单元是

否处理完。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值