深入探究执行器:Storm 内部数据流转与队列管理
1. 执行器细节剖析
1.1 提交反馈监听器 Spout 的执行器细节
数据通过提交反馈监听器 Spout 进入提交计数拓扑,该 Spout 监听包含单个提交消息的数据流。这个执行器不仅仅是单个线程,实际上由两个线程和一个队列组成:
- 主线程 :主要负责运行用户提供的代码,例如 nextTuple 方法中的代码。
- 发送线程 :负责将元组传输到拓扑中的下一个 Bolt。
- 队列 :用于将发出的元组从执行器中传输出去,该队列基于 LMAX Disruptor 库实现,用于实现执行器之间的高性能消息传递。
下面是数据在 Spout 执行器内的处理流程:
graph LR
A[Spout 从包含提交消息的队列读取消息] --> B[主线程处理发出的元组]
B --> C[主线程将发出的元组放入输出 Disruptor 队列]
1.2 同一 JVM 内两个执行器之间的元组传输
当元组被放入 Spout 的输出 Disruptor 队列后,发送线程会从该队列读取元组,并通过传输函数将其发送到适当的执行器。由于提交反馈监听器 Spout 和电子邮件提取器 Bolt 在同一个 JVM 中,这种传输是本地传输,执行器的发送线程直接将输出元组发布到下一个执行器,几乎没有开销,速度极快。
Storm执行器与队列管理解析
超级会员免费看
订阅专栏 解锁全文
4853

被折叠的 条评论
为什么被折叠?



