风暴三叉戟批次是否同时处理?

时间:2015-02-08 14:04:54

标签: apache-storm trident

我想知道三叉戟批次是否并行执行,即一次可以运行多批次?

除此之外,我有几个问题太小,无法单独发布。如果它们足够大,请随意发表评论以便单独发布。

  1. 如果只处理批处理中的特定元组失败会怎样?

    然后将重播批处理,导致重新处理之前成功处理的元组?例如,单词计数,其中每个元组包含一个单词但只有几个元组被成功计数?例如,如果有三个单词叫做 man ,并且计数只显示2,这意味着一个元组在处理时失败了?

  2. 仅在此tutorial中,存储以前的 txid 。以前的交易ID怎么样?

    例如,有三个批次1,2,3,4。现在,在批次#1之后,执行#2并重放批次#1。然后txid将为2,因为最近处理的批次是批次#2,并且无法识别批次#1是否先前已处理过。 如果是这样,则必须按顺序执行批处理。这意味着在批次#1成功完成之前,批次#2无法执行。如果是这种情况,那么执行批次的并行性在哪里?

  3. 如果拓扑中的批处理没有正确执行特定功能会怎样?

    例如,我有两个函数,一个是将消息持久存储到数据库中,另一个是生成kafka队列。在这里,持久存储在数据库中是成功的,但由于某些节点故障(例如),推送到kafka队列失败。然后,我想只需要为该特定批处理执行推送到kafka队列的函数。三叉戟有办法吗?为此,我将不仅需要存储txid,还需要存储要为该txid处理的函数列表。怎么可能呢?

1 个答案:

答案 0 :(得分:0)

我最了解:

  1. 任何故障都被视为批次失败,并且将由喷口重播。事务状态存储上次操作的值和事务id。如果计数“man”失败,则其txid将小于当前的txid,并且应该将此批次数据添加到存储的值。否则,它可以忽略重放,因为它知道此批次的数据已经计入此密钥。

  2. 状态事务以严格的txid顺序处理,但仅由有状态组件处理。函数可以在即将发生的事务元组上执行。

  3. 听起来你想要的是国家而不是功能。状态将记住它已经完成批处理,并在重放时忽略它。