深入解析Storm:源码剖析与核心机制

5星 · 超过95%的资源 需积分: 10 122 下载量 10 浏览量 更新于2024-07-22 收藏 406KB PDF 举报
"storm源码解析" 本文档是对Apache Storm开源流处理系统的源代码进行深入解析的笔记,由作者徽沪一郎在2014年5月28日撰写。主要内容分为四个部分:启动场景分析、Topology提交过程、Message Passing(消息传递)以及Reliability(可靠性)。 1. 启动场景分析: - nimbus启动场景:nimbus作为Storm的主控节点,负责分配任务和监控拓扑状态。程序入口是`NimbusServer`,它会读取配置文件,与Thrift服务接口结合,并利用Zookeeper进行协调。 - supervisor启动场景:supervisor是Storm的执行节点,负责启动和监控worker进程。同样,它也与Zookeeper交互,用于获取和更新任务分配信息。 2. Topology提交过程: - 用户通过`StormBuilder`构建拓扑,设置Spout和Bolt,然后调用`createTopology`生成实际的拓扑结构。 - `stormclient`模块处理用户提交的拓扑,与nimbus通信。 - nimbus接收到提交请求后,会执行`submitTopologyWithOpts`,对拓扑进行规范化处理(`normalize-topology`),然后分配任务(`mk-assignments`)并监控(`TopologyMonitoring`)。 3. Message Passing(消息传递): - 基本概念包括tuple(数据单元)和grouping(分组策略)。 - Tuple接收:worker启动接收线程,通过socket接收来自其他worker的消息,利用Disruptor框架在线程间高效传递消息,最后由executor处理。 - Tuple发送:通过IConnection接口实现消息发送,grouping策略决定了消息如何在executor之间路由。 4. Reliability(可靠性): - Storm通过acking机制保证消息处理的可靠性,每个被处理的tuple都有一个ack(确认)流程。 - 当一个tuple被完全处理后,发送方会收到ack,否则将重新发送未确认的tuple。 这些笔记详细阐述了Storm的核心组件和工作流程,对于理解Storm如何实现高可用和容错性,以及如何高效地处理实时数据流,提供了宝贵的洞察。同时,对于想要深入研究分布式系统、流处理技术或希望优化Storm性能的开发者来说,这是一份极具价值的参考资料。