深入解析Storm:源码剖析与核心机制
5星 · 超过95%的资源 需积分: 10 43 浏览量
更新于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性能的开发者来说,这是一份极具价值的参考资料。
2022-05-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
const_iterator
- 粉丝: 5
- 资源: 15
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器