因此,Apache Storm + Trident提供了完全一次的语义。想象我有以下拓扑:在存储器风暴三叉戟在网络分区和/或故障场景中的确切一次保证
TridentSpout -> SumMoneyBolt -> SaveMoneyBolt -> Persistent Storage.
CalculateMoneyBolt
总和的货币值,然后将结果传递给SaveMoneyBolt
应的最终值保存到远程存储/数据库。
现在,我们计算这些值并仅存储一次数据库非常重要。我们不希望意外地重复计算这笔钱。
那么Storm with Trident如何在成功发送对数据库的写入请求时处理网络分区和/或故障场景,数据库已成功接收请求,记录事务,并在响应客户端时SaveMoneyBolt
在收到数据库响应之前已经死亡或从网络中分区了吗?
我认为如果SaveMoneyBolt
已经死亡,Trident会重试批次,但我们不能重复计算。
这样的场景是如何处理的?
谢谢。