1

Storm v1.2.2 我有一个有 6 个节点集群的环境,每个集群有 16 个核心。我已经部署了一个示例拓扑,它从具有 12 个分区的 kafka 主题中读取消息。

配置

待处理的最大喷口为 15。
拓扑消息超时为 300 秒
拓扑 Acker 执行器为 2(等于工人数)。
Worker1 -> Bolt-A 的 15 个执行器(任务等于执行器的数量)
Worker2 -> Bolt-A 的 15 个执行器(任务等于执行器的数量)
螺栓(A 到 B 到 C)每个有 30 个执行者,跨越 2 个工人

我尝试向该 kafka 主题发布 20 条消息,因为最大 spout 挂起是 15,所以只有 15 条消息应该从 spout 获取并发出,但我发现只有 7 条消息被发送到 Bolt-A。在这 7 条消息被发送到 Bolt-B 之后,Bolt-A 从 spout 收到剩余的消息。

所以理想情况下,bolt-A 应该从 spout 获得 15 条消息,一旦这 15 条被确认,那么剩下的 5 条消息应该已经被拾取。但是我看到只收到了 7 条消息,并且我可以看到 8 个执行程序处于闲置状态,无所事事,是否我在风暴配置中遗漏了什么?我尝试使用 localOrSuffled 和 Suffled 分组,但很少有执行者总是空闲。有什么建议可以将工作平均分配给所有可用的执行者吗?

4

0 回答 0