【发布时间】:2017-06-21 12:40:13
【问题描述】:
因此,Apache Storm + Trident 提供了完全一次性的语义。假设我有以下拓扑:
TridentSpout -> SumMoneyBolt -> SaveMoneyBolt -> Persistent Storage.
CalculateMoneyBolt 对内存中的货币值求和,然后将结果传递给SaveMoneyBolt,SaveMoneyBolt 应该将最终值保存到远程存储/数据库。
现在非常重要的是我们计算这些值并且只将一次存储到数据库中。我们不想不小心重复数钱。
那么当对数据库的写入请求已成功发送、数据库已成功接收请求、记录事务以及响应客户端时,Storm with Trident 如何处理网络分区和/或故障场景,@ 987654324@ 在收到数据库响应之前已经死亡或从网络中分区?
我假设如果 SaveMoneyBolt 已经死亡,Trident 会重试该批次,但我们不能承受重复计算。
如何处理此类场景?
谢谢。
【问题讨论】:
标签: apache-storm reliability network-partitioning