风暴中的哪个类确实实例化了每个螺栓和喷口的螺纹数量?

时间:2013-11-30 12:48:16

标签: multithreading apache-storm

我需要知道Storm如何管理每个螺栓中的并行工作者数量。 IrichBolt类和IRichSpout类都没有实现Runnable类。我真的需要知道风暴如何管理多线程?

1 个答案:

答案 0 :(得分:5)

它有点太广泛而无法讨论,但这是我可以尝试分享的东西。在风暴中非常简短的SpoutsBolts可以定义为实际处理数据的实体或组件。在风暴术语中,它们被称为tasks(因此您不需要其IRichSpout之类的父接口来实现类似Runnable的东西。现在负责执行这些任务线程称为Executors。来自doc

  

在Storm的术语中,“ parallelism ”专门用于描述所谓的并行性提示,这意味着执行者(线程)的初始数量组件(喷口或螺栓)

这些执行器(线程)再次由worker process生成。来自doc

  

工作进程执行拓扑的子集。工作进程属于特定拓扑,可以为此拓扑的一个或多个组件(spout或bolt)运行一个或多个执行程序

风暴群集中的机器可能run single or multiple such worker process用于一个或多个拓扑,each process can run executors for specific topologies(您甚至可以在运行时使用风暴重新平衡机制来更改这些执行程序)。 对于与这些工作进程的内部通信,Storm使用由LMAX Disruptor支持的各种消息队列。他们维护自己的线程,如 receiver 线程& sender 用于管理传入和传出的消息。

您可以查看this doc页面以获得更好的概述。这个very nice article解释了它如何处理并行性。这可能有助于您进一步挖掘并分享您的发现:)