风暴与三叉戟:当不使用三叉戟?(Storm vs. Trident: When not to use

2019-07-22 03:04发布

我工作风暴 ,它是精细了很多的用例。 最近,我看了一下三叉戟 ,这是风暴的一个高层次的抽象。 它支持仅一次处理 ,使状态处理更容易。

但现在我不知道。为什么我不能一直使用,而不是风暴三叉戟?

我读到目前为止:

  • 三叉戟分批处理消息,所以生产时间可能会更长。
  • 三叉戟还没有能够处理回路中的拓扑结构。

是否有任何其他缺点用的,而不是风暴三叉戟是什么时候? 因为现在,我觉得我上面列出的缺点是微不足道的。

用什么情况下不能用三叉戟来实现?


后果:

因为我问的问题我公司决定去三叉戟第一。 当有性能问题,我们将只使用纯风暴。 可悲的是,这不是一个积极的决定,它只是成为了默认的行为(我不在身边那个时候)。

他们的假设是,在大多数使用情况下,我们需要的状态或仅一次处理,否则我们会需要它在不久的将来。 我理解他们的理由,因为从风暴移动三叉戟或背部不是一件容易的转变,但我个人认为流处理的无状态的概念,并非所有人都明白,那就是使用三叉戟的主要原因。

Answer 1:

要回答你的问题:当你不应该用三叉戟? 每当你不能承受。

三叉戟增加了复杂性风暴的拓扑结构,降低性能并生成状态。 问自己一个问题:你需要“恰好一次”处理三叉戟的语义,或者你可以住风暴的“至少一次”的处理语义。 对于只有一次,使用三叉戟,否则没有。

我也只是想强调Storm保证所有的消息都将被处理的事实。 一些消息可能只是不止一次地处理。



Answer 2:

如果最低响应时间是你的目标,你不需要仅一次处理,然后用暴风比三叉戟更好。



Answer 3:

三叉戟是在Twitter风暴的顶部做实时计算的一个高层次的抽象,可以在风暴0.8.x. 风暴是无状态的流处理框架和Trident提供状态流处理。



Answer 4:

克里斯,因为这两个都是开源技术,三叉戟作为一个只在风暴之上的一个场景的实现,当然,这带来了性能开销。 如果三叉戟不能满足您的要求,您可以创建对风暴的顶部自己状态的实现。 三叉戟及时得到更高层次的项目,如三叉戟-ML。



Answer 5:

假设我们想要做的过滤+另外一个字段的元组。 如果我们用暴风通常我们使用2个机器人进行过滤,添加现场的。 所以我们再次需要通过可利用全球分组的元组发送到新的螺栓。 所以这里NW带宽可能成为瓶颈。

通过使用三叉戟,我们可以使用上面做的一台机器上。 所以需要在这种情况下,没有重新组合。 这样的用例中,除了“恰好一次” /“在东部一次”能够区分使用什么等等。

三叉戟是种分组逻辑分组



文章来源: Storm vs. Trident: When not to use Trident?