内容简介
《Storm源码分析》从源代码的角度详细分析了Storm的设计与实现,共分为三个部分,第一部分介绍了Storm的基本原理以及Storm集群系统的搭建方法,第二部分深入剖析了Storm的底层架构,如Nimbus、Supervisor、Worker以及Task,第三部分系统讨论了Storm如何实现可靠的消息传输,如Transaction Topology以及Trident。
《Storm源码分析》适用于程序员、架构师以及计算机专业的学生。
目录
目 录
第1章 总体架构与代码结构 1
1.1 Storm的总体结构 1
1.2 Storm的元数据 3
1.2.1 元数据介绍 3
1.2.2 Storm怎么使用这些元数据 4
1.3 Storm的代码结构 7
1.3.1 Clojure代码 7
1.3.2 Java代码 8
1.3.3 Trident代码 9
1.3.4 其他代码 10
第2章 搭建Storm集群 11
2.1 搭建单机Storm集群 11
2.2 搭建多机Storm集群 14
2.2.1 设置环境 14
2.2.2 启动Storm集群 15
2.2.3 提交Topology 15
2.3 WordCountTopology介绍 15
2.3.1 RandomSentenceSpout 15
2.3.2 SplitSentence 16
2.3.3 WordCount 17
2.3.4 WordCountTopology构建 17
第3章 Storm编程基础 19
3.1 Fields定义 19
3.2 Tuple接口 20
3.3 常用声明接口 21
3.3.1 配置声明接口 22
3.3.2 输入声明接口 23
3.3.3 输出字段声明接口 24
3.3.4 组件声明接口 25
3.4 Spout输出收集器 25
3.4.1 ISpoutOutputCollector和SpoutOutputCollector 25
3.4.2 Executor中ISpoutOutputCollector的实现 27
3.5 Bolt输出收集器 28
3.5.1 IOutputCollector和OutputCollector 28
3.5.2 IBasicOutputCollector和BasicOutputCollector 31
3.5.3 BatchOutputCollector和BatchOutputCollectorImpl 32
3.5.4 Executor中的IOutputCollector实现 34
3.6 组件接口 35
3.7 Spout接口 35
3.7.1 ISpout 36
3.7.2 IRichSpout 38
3.8 Bolt接口 38
3.8.1 IBolt 38
3.8.2 IRichBolt 40
3.8.3 IBasicBolt 40
3.8.4 IBatchBolt 42
3.8.5 小结 45
3.9 Storm数据结构 46
3.9.1 GlobalStreamId 46
3.9.2 消息分组方式 46
3.9.3 StreamInfo 47
3.9.4 ShellComponent 47
3.9.5 ComponentObject 47
3.9.6 ComponentCommon 47
3.9.7 SpoutSpec 48
3.9.8 Bolt 48
3.9.9 StormTopology 49
3.9.10 TopologySummary 49
3.9.11 SupervisorSummary 49
3.9.12 ClusterSummary 50
3.9.13 BoltStats 50
3.9.14 SpoutStats 50
3.9.15 统计信息 50
3.9.16 DRPC 51
3.10 基本Topology构建器 52
3.10.1 TopologyBuilder 52
3.10.2 ConfigGetter 55
3.10.3 SpoutGetter和BoltGetter 55
3.10.4 一个简单例子 56
3.11 异常处理 57
第4章 基础函数和工具类 58
4.1 计时器 58
4.1.1 mk-timer 58
4.1.2 check-active! 60
4.1.3 schedule 60
4.1.4 schedule-recurring 60
4.1.5 cancel-timer 61
4.2 async-loop 61
4.3 event-manager 62
4.4 even-sampler 63
4.5 ZooKeeper工具类 64
4.5.1 mk-client 64
4.5.2 create-node 65
4.5.3 get-data 65
4.5.4 进程内启动ZooKeeper 66
4.6 LocalState 66
4.7 ClusterState 68
4.8 StormClusterState 69
第5章 通信机制 71
5.1 进程间通信 71
5.1.1 进程间通信协议 71
5.1.2 LocalCluster模式实现 72
5.1.3 分布式模式实现 73
5.1.4 协议使用 75
5.2 进程内通信 77
5.2.1 Disruptor Queue的使用 77
5.2.2 DisruptorQueue的Clojure处理器 80
第6章 Nimbus 81
6.1 Nimbus服务接口定义 81
6.2 Nimbus相关的数据结构 83
6.2.1 Java 数据结构 83
6.2.2 Clojure数据结构 84
6.3 Nimbus中的线程