Storm的新手,只是理解Spouts的概念以及如何在其中实现并行性。
我已经定义了一个Spout A并设置了3个任务和3个执行器和1个Bolt(让我们不用担心Bolt)。让我们假设每个喷口任务 被指派一名专职工作人员。这意味着有3个喷口准备接收流。消息或流(比如X)进入拓扑。如何处理喷口?
一个。所有的喷口都会收到A流吗?如果是,那么所有3个喷口都将处理它并且相同的消息被多次处理了吗? 湾在上述情况下谁将决定哪个喷口应该接收此流? C。是否可以平衡喷嘴的负载? d。是不是拓扑中应该只有一个喷口?
P.S:考虑到这是一般的鲸鱼喷水,不要与卡夫卡鲸鱼喷水混淆。答案 0 :(得分:1)
风暴只是一个框架,你的问题基本上由鲸鱼喷码的实施决定。所以,遗憾的是,没有办法考虑"一般鲸鱼喷水"。我们必须讨论一些具体的鲸鱼喷水。
让我们以卡夫卡鲸鱼为例。基本上,它与普通的卡夫卡消费者没有区别。 Kafka spout有一个逻辑可以将分区分配给不同的spout任务,并且在此期间也会处理负载平衡,一个分区只会被一个spout任务占用,因此不会有多个数据。