对于TridentSpout和TridentState的理解

TridentSpout基于batch的组成方式三种类型:非事务型,事务型,非透明型。

非事务型:非事务型Spout不能为batch提供任何保证。

事务性:每个batch的txid保持不变,对于一个特定的txid重复执行时,batch中的内容保持不变,例如:

txid=1的batch发送的内容为123,执行失败重复发送时内容仍然为123。

非透明型:能够保证数据是非重复的,每个数据都会在有且仅有一个batch中执行成功,但不保证每个batch中的内容一样,例如:txid=1的batch发送的内容为123,执行失败重复发送时内容有可能变为124,其他batch中不会再出现1234的数据。

TridentState也分为三种类型:非事务型,重复事务型,不透明事务型。

非事务型:不保证任何状态信息

重复事务型:存储每个batch的txid,更新数据时根据txid来判断,当txid相同时不更新,不同时更新

不透明事务型:存储每个batch的txid以及上一个batch的数据,当txid不同时,更新当前值以及上一个状态的值,例如:存储的数据为:{ "value": 2, "prevValue": 1, "txid": 1 },当前的batch需要对value的值加2,当前的txid为2,更新后的数据为:{ "value": 4, "prevValue": 2, "txid": 2 },当txid相同是,说明上一个batch处理失败了,需要用本次的数据覆盖上一次的数据,更新后的数据为:{ "value": 3, "prevValue": 1, "txid": 1}

不同的spout和state能够实现唯一处理的对应关系为:

  state  
  非事务型事务型不透明型
spout非事务型nonono
 事务型noyesyes
 不透明型nonoyes

 

转载于:https://my.oschina.net/u/2610576/blog/1535930

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值