Storm源码分析

Storm源码分析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: ,
2014-10
版次: 1
ISBN: 9787115371263
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 472页
字数: 715千字
正文语种: 简体中文
丛书: 图灵原创
39人买过
  •   《Storm源码分析》从源代码的角度详细分析了Storm的设计与实现,共分为三个部分,首先介绍了Storm的基本原理以及Storm集群系统的搭建方法,第二部分深入剖析了Storm的底层架构,如Nimbus、Supervisor、Worker以及Task,第三部分系统讨论了Storm如何实现可靠的消息传输,如TransactionTopology以及Trident。
      《Storm源码分析》适用于程序员、架构师以及计算机专业的学生。
      李明,2001~2007年在哈尔滨工业大学完成本科以及硕士的学习。微软搜索技术部门研发工程师及高级开发经理,擅长Linux、Clojure、Java、C#等多种开发技术,长期致力于大数据、分布式系统的研究和应用,目前致力于实时性分布式处理系统的研究与开发。  
    王晓鹏,2004~2011年在北京邮电大学完成本科以及硕士的学习。微软搜索技术部门高级研发工程师,擅长WindowsphonePhone、Silverlight、Clojure、Java、C#等多种开发技术,一直致力于大数据处理、分布式系统的研究和应用,目前致力于实时性分布式处理系统的研究与开发。
    第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中的线程介绍 86
    6.3.1 mk-assignments 87
    6.3.2 do-cleanup 89
    6.3.3 clean-inbox 90
    6.4 Topology状态转移 90
    6.4.1 transition-name! 90
    6.4.2 transition! 91
    6.4.3 state-transitions 92
    6.5 启动Nimbus服务 96
    6.5.1 launch-server! 96
    6.5.2 service-handler 97
    6.6 关闭Nimbus服务 99
    6.7 主要服务方法 99
    6.7.1 submitTopology 99
    6.7.2 kill、rebalance、activate、deactivate 方法 101
    6.7.3 文件上传与下载 102
    6.7.4 获取UI所需的信息 104
    6.7.3 获取Topology 106
    6.7.6 获取Storm配置项 107
    6.8 主要辅助方法 107
    6.8.1 system-topology! 107
    6.8.2 normalize-topology 112
    6.8.3 compute-new-topology->executor->node+port 114
    6.8.4 compute-executors 117

    第7章 Scheduler 119
    7.1 IScheduler接口 119
    7.2 EvenScheduler 120
    7.2.1 schedule-topolpgies-evenly 120
    7.2.2 schedule-topology 121
    7.2.3 get-alive-assigned-node+port->executors 122
    7.2.4 sort-slots 123
    7.3 DefaultScheduler 124
    7.3.1 default-schedule 124
    7.3.2 slots-can-reassign 126
    7.3.3 bad-slots 126
    7.4 IsolationScheduler 127
    7.5 调度示例 131
    7.5.1 EvenScheduler和DefaultScheduler 131
    7.5.2 IsolationScheduler 134

    第8章 Scheduler 137
    8.1 与Supervisor相关的数据结构 137
    8.1.1 standalone-supervisor 137
    8.1.2 Supervisor的数据 138
    8.1.3 本地存储数据 139
    8.2 Supervisor中的线程 140
    8.2.1 计时器线程 140
    8.2.2 同步Nimbus任务的线程 140
    8.2.3 管理Worker进程的线程 143
    8.3 启动Supervisor 145
    8.4 关闭Supervisor 147
    8.5 重要方法介绍 147
    8.5.1 launch-worker 147
    8.5.2 read-allocated-workers 150
    8.5.3 wait-for-worker-launch 151
    8.5.4 shutdown-worker 152
    8.5.5 download-storm-code 152

    第9章 Worker 155
    9.1 Worker中的数据 155
    9.2 Worker中的计时器 157
    9.2.1 Worker的心跳 157
    9.2.2 Executor的心跳 158
    9.2.3 Worker中对ZMQ连接的维护 159
    9.2.4 从ZooKeeper获取Topology的活跃情况 161
    9.2.5 小结 162
    9.3 创建Worker 163
    9.4 关闭Worker 164
    9.5 重要辅助方法介绍 165
    9.5.1 Worker中的接收函数 166
    9.5.2 Worker中的发送函数 167
    9.5.3 获取属于Worker的Executor 169
    9.5.4 创建Executor的接收消息队列和查找表 169
    9.5.5 下载Topology的配置项以及代码 170
    9.6 小结 171

    第10章 Executor 172
    10.1 Executor的数据 172
    10.2 Executor的输入和输出 174
    10.2.1 Executor的输入及处理 174
    10.2.2 Executor的输出及发送 175
    10.3 Spout类型的Executor 176
    10.3.1 准备消息循环的数据 176
    10.3.2 Spout输入处理函数 178
    10.3.3 Spout消息发送函数 180
    10.3.4 Spout对象的初始化 181
    10.3.5 消息循环 182
    10.4 Bolt类型的Executor 184
    10.4.1 准备消息循环的数据 184
    10.4.2 Bolt输入处理函数 184
    10.4.3 Bolt的消息发送函数 185
    10.4.4 Bolt对象的初始化 185
    10.4.5 消息循环 186
    10.5 创建Executor 187
    10.6 辅助函数介绍 188
    10.6.1 组件的Grouper函数 188
    10.6.2 带流量控制的错误报告方法 193
    10.6.3 触发系统Ticks 194
    10.7 小结 196

    第11章 Task 198
    11.1 Task的上下文对象 198
    11.1.1 TopologyContext 198
    11.1.2 GeneralTopologyContext 199
    11.1.3 WorkerTopologyContext 200
    11.1.4 TopologyContext 201
    11.2 创建Task数据 202
    11.3 mk-tasks-fn函数 204
    11.4 send-unanchored 205
    11.5 创建Task 206
    11.6 Storm中传输的消息以及序列化 206

    第12章 Storm的Ack框架 208
    12.1 Acker Bolt的实现分析 209
    12.2 启动消息跟踪 211
    12.3 消息跟踪 212
    12.4 Ack机制的例子 214

    第13章 系统运行统计 216
    13.1 基础数据结构以及更新算法 216
    13.1.1 滑动窗口的数据结构 216
    13.1.2 滑动窗口的回调函数 220
    13.1.3 滑动窗口集合的类型 221
    13.2 Storm中的统计信息 222
    13.2.1 Stats中定义的统计类别 222
    13.2.2 运行统计的更新 223
    13.2.3 运行统计的更新时间点 223
    13.2.4 获取统计数据 228
    13.3 运行统计的Thrift结构 229

    第14章 系统运行统计的另一种实现 231
    14.1 内置统计信息的计算 231
    14.1.1 MultiCountMetric 232
    14.1.2 MultiReducedMetric 233
    14.2 内置统计类型 234
    14.2.1 Spout类型的内置统计 235
    14.2.2 Bolt类型的内置统计 235
    14.3 统计触发消息 235
    14.3.1 注册统计信息 236
    14.3.2 触发消息的产生与发送 237
    14.3.3 处理统计触发消息 238
    14.4 运行统计收集节点 239
    14.5 SystemBolt 241

    第15章 事务Topology的实现 243
    15.1 事务Topology的实现概述 243
    15.1.1 事务Topology的类型 244
    15.1.2 事务Topology的类关系 245
    15.2 ITransactionalSpout接口 246
    15.3 协调Spout节点的执行器 248
    15.3.1 ZooKeeper客户端工具 248
    15.3.2 协调Spout的执行器 255
    15.3.3 消息发送Bolt的执行器 261
    15.4 CoordinatedBolt的实现分析 264
    15.4.1 TrackingInfo 264
    15.4.2 CoordinatedOutput-Collector 265
    15.4.3 CoordinatedBolt中的消息类型 267
    15.4.4 成员变量以及主要方法分析 267
    15.5 分区的事务类型 271
    15.5.1 分区的事务Spout接口 271
    15.5.2 分区的事务Spout的执行器 273
    15.6 分区的模糊事务Spout 277
    15.6.1 分区的模糊事务Spout的接口 277
    15.6.2 模糊的事务Spout执行器 278
    15.7 事务Topology的构建器 281
    15.7.1 构建器的构造函数及成员变量 281
    15.7.2 设置Bolt对象 283
    15.7.3 构建Topology 284
    15.7.4 输入流声明器 286

    第16章 事务Topology示例 288
    16.1 例子代码 288
    16.1.1 分区的事务Spout 288
    16.1.2 局部计数Bolt的实现 291
    16.1.3 全局计数Bolt的实现 292
    16.2 构建Topology 293
    16.3 事务处理示例 295

    第17章 Trident的Spout节点 298
    17.1 ITridentSpout接口 298
    17.1.1 BatchCoordinator接口 299
    17.1.2 TridentSpoutCoordinator 300
    17.1.3 MasterBatchCoordinator 301
    17.1.4 消息发送节点接口 306
    17.1.5 消息发送接口的执行器 306
    17.2 适配IRichSpout接口 307
    17.3 适配IBatchSpout接口 311
    17.4 Trident中分区的Spout类型 311
    17.4.1 分区Spout接口 311
    17.4.2 分区Spout的执行器 313
    17.5 模糊事务类型的Spout节点 316
    17.5.1 模糊事务类型的Spout接口 317
    17.5.2 模糊事务类型Spout的执行器 317
    17.6 构建Spout节点 320
    17.6.1 TridentTopology的newStream调用 320
    17.6.2 TridentTopology中newDRPCStream调用 321

    第18章 Trident的存储 322
    18.1 存储的基本接口 322
    18.2 MapState接口的实现 323
    18.2.1 非事务类型的存储 324
    18.2.2 事务类型的存储 325
    18.2.3 模糊事务类型存储 327
    18.3 值的序列化方法 329
    18.4 数据更新接口 330
    18.4.1 CombinerValueUpdater 330
    18.4.2 ReducerValueUpdater 331
    18.5 存储更新接口 331
    18.5.1 ReducerAggStateUpdater 332
    18.5.2 MapReducerAggStateUpdater 332
    18.5.3 BaseStateUpdater 334
    18.6 创建存储对象 334

    第19章 Trident消息 336
    19.1 ValuePointer 336
    19.2 Factory接口及其实现 337
    19.2.1 ProjectionFactory 338
    19.2.2 FreshOutputFactory 339
    19.2.3 OperationOutputFactory 339
    19.2.4 RootFactory 341
    19.3 消息工厂的例子 342
    19.4 TridentTupleView 342
    19.5 ComboList 343

    第20章 Trident操作与处理节点 346
    20.1 操作的基本接口 346
    20.2 Aggregator实现 347
    20.2.1 GroupedAggregator 348
    20.2.2 ChainedAggregatorImpl 350
    20.2.3 SingleEmitAggregator 353
    20.3 用户接口及其实现 355
    20.3.1 ReducerAggregator接口及其实现 355
    20.3.2 CombinerAggregator接口及其实现 356
    20.4 所有处理节点的上下文 357
    20.4.1 单个处理节点的上下文 358
    20.4.2 操作执行的上下文 359
    20.5 Trident的输出收集器 359
    20.5.1 FreshCollector 359
    20.5.2 CaptureCollector 360
    20.5.3 GroupCollector 360
    20.5.4 AppendCollector 361
    20.5.5 AddIdCollector 361
    20.6 Trident的处理节点 362
    20.6.1 TridentProcessor接口 363
    20.6.2 PartitionPersistProcessor 363
    20.6.3 StateQueryProcessor 365
    20.7 聚集器的执行 367

    第21章 Trident流的基本操作 370
    21.1 流的成员变量和基础方法 370
    21.1.1 流的成员变量 370
    21.1.2 流节点名字 370
    21.1.3 流的映射检查 372
    21.1.4 添加节点 372
    21.2 流映射操作 373
    21.3 流的分组操作 374
    21.4 流的逐行操作 374
    21.5 流的分区操作 374
    21.6 流的单聚集器聚集操作 376
    21.7 流的多聚集器聚集操作 377
    21.7.1 ChainedAggregatorDeclarer 377
    21.7.2 分区上的局部聚集操作 379
    21.7.3 全局聚集操作 379
    21.7.4 含有多个聚集器的partitionAggregate操作 381
    21.8 流的聚集操作 382
    21.9 流的分区写入操作 383
    21.10 查询操作 384
    21.11 流的全局写入操作 384
    21.12 流的操作与有向图构建 384
    21.13 分组流 385
    21.13.1 成员变量 385
    21.13.2 逐行操作 385
    21.13.3 分组流的分区聚集操作 386
    21.13.4 查询操作 386
    21.13.5 聚集操作 386
    21.13.6 写入操作 387
    21.14 利用流操作来构建Topology的例子 388

    第22章 Trident中流的交互操作 392
    22.1 基本接口 392
    22.2 JoinerMultiReducer 393
    22.2.1 成员变量及构造函数 393
    22.2.2 execute方法 395
    22.2.3 complete方法 397
    22.3 GroupedMultiReducerExecutor 397
    22.4 MultiReducerProcessor 399
    22.5 连接操作 401
    22.6 流合并操作 403

    第23章 Trident中的Bolt节点 404
    23.1 SubTopologyBolt 404
    23.1.1 输入准备 404
    23.1.2 成员变量 405
    23.1.3 主要方法 406
    23.2 Trident中的Bolt执行器 409
    23.2.1 ITridentBatchBolt接口 410
    23.2.2 TrackedBatch 410
    23.2.3 定制的输出收集器 412
    23.2.4 消息类型 414
    23.2.5 数据成员分析 414
    23.2.6 主要成员方法分析 416

    第24章 Trident的执行优化 420
    24.1 节点类型 420
    24.1.1 基本节点类型 420
    24.1.2 Spout节点 422
    24.1.3 处理节点 422
    24.1.4 分区节点 423
    24.2 执行优化算法 426
    24.2.1 节点组 426
    24.2.2 节点组的合并算法 427
    24.2.3 处理节点组中的分区节点 431
    24.2.4 节点组以不同的方式收听相同流 431
    24.2.5 执行优化后的节点组 434
    24.2.6 计算节点组的并行度 434

    第25章 Trident与DRPC 437
    25.1 DRPC服务器 438
    25.1.1 DRPC服务器的成员变量 438
    52.1.2 DRPC用户接口及其实现 439
    25.1.3 DRPC Topology端接口及其实现 440
    25.1.4 启动DRPC服务器 441
    25.2 DRPC的客户端 442
    25.3 DRPC中Spout节点 443
    25.4 DRPC Spout的执行器 446
    25.5 completeDRPC操作 449
    25.6 返回DRPC结果 451

    第26章 Trident的Topology构建器 453
    26.1 基本工具函数 453
    26.1.1 committerBatches 453
    26.1.2 fleshOutStreamBatchIds 453
    26.1.3 getOutputStreamBatchGroups 454
    26.2 TridentTopologyBuilder 455
    26.2.1 成员变量 455
    26.2.2 设置Spout节点 456
    26.2.3 设置Bolt节点 458
    26.3 一个例子 460

    第27章 多语言 462
    27.1 ShellProcess 462
    27.2 ShellBolt 464
    27.2.1 成员变量 464
    27.2.2 读写线程 465
    27.3 ShellSpout 467

    第28章 Storm中的配置项 469
  • 内容简介:
      《Storm源码分析》从源代码的角度详细分析了Storm的设计与实现,共分为三个部分,首先介绍了Storm的基本原理以及Storm集群系统的搭建方法,第二部分深入剖析了Storm的底层架构,如Nimbus、Supervisor、Worker以及Task,第三部分系统讨论了Storm如何实现可靠的消息传输,如TransactionTopology以及Trident。
      《Storm源码分析》适用于程序员、架构师以及计算机专业的学生。
  • 作者简介:
      李明,2001~2007年在哈尔滨工业大学完成本科以及硕士的学习。微软搜索技术部门研发工程师及高级开发经理,擅长Linux、Clojure、Java、C#等多种开发技术,长期致力于大数据、分布式系统的研究和应用,目前致力于实时性分布式处理系统的研究与开发。  
    王晓鹏,2004~2011年在北京邮电大学完成本科以及硕士的学习。微软搜索技术部门高级研发工程师,擅长WindowsphonePhone、Silverlight、Clojure、Java、C#等多种开发技术,一直致力于大数据处理、分布式系统的研究和应用,目前致力于实时性分布式处理系统的研究与开发。
  • 目录:
    第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中的线程介绍 86
    6.3.1 mk-assignments 87
    6.3.2 do-cleanup 89
    6.3.3 clean-inbox 90
    6.4 Topology状态转移 90
    6.4.1 transition-name! 90
    6.4.2 transition! 91
    6.4.3 state-transitions 92
    6.5 启动Nimbus服务 96
    6.5.1 launch-server! 96
    6.5.2 service-handler 97
    6.6 关闭Nimbus服务 99
    6.7 主要服务方法 99
    6.7.1 submitTopology 99
    6.7.2 kill、rebalance、activate、deactivate 方法 101
    6.7.3 文件上传与下载 102
    6.7.4 获取UI所需的信息 104
    6.7.3 获取Topology 106
    6.7.6 获取Storm配置项 107
    6.8 主要辅助方法 107
    6.8.1 system-topology! 107
    6.8.2 normalize-topology 112
    6.8.3 compute-new-topology->executor->node+port 114
    6.8.4 compute-executors 117

    第7章 Scheduler 119
    7.1 IScheduler接口 119
    7.2 EvenScheduler 120
    7.2.1 schedule-topolpgies-evenly 120
    7.2.2 schedule-topology 121
    7.2.3 get-alive-assigned-node+port->executors 122
    7.2.4 sort-slots 123
    7.3 DefaultScheduler 124
    7.3.1 default-schedule 124
    7.3.2 slots-can-reassign 126
    7.3.3 bad-slots 126
    7.4 IsolationScheduler 127
    7.5 调度示例 131
    7.5.1 EvenScheduler和DefaultScheduler 131
    7.5.2 IsolationScheduler 134

    第8章 Scheduler 137
    8.1 与Supervisor相关的数据结构 137
    8.1.1 standalone-supervisor 137
    8.1.2 Supervisor的数据 138
    8.1.3 本地存储数据 139
    8.2 Supervisor中的线程 140
    8.2.1 计时器线程 140
    8.2.2 同步Nimbus任务的线程 140
    8.2.3 管理Worker进程的线程 143
    8.3 启动Supervisor 145
    8.4 关闭Supervisor 147
    8.5 重要方法介绍 147
    8.5.1 launch-worker 147
    8.5.2 read-allocated-workers 150
    8.5.3 wait-for-worker-launch 151
    8.5.4 shutdown-worker 152
    8.5.5 download-storm-code 152

    第9章 Worker 155
    9.1 Worker中的数据 155
    9.2 Worker中的计时器 157
    9.2.1 Worker的心跳 157
    9.2.2 Executor的心跳 158
    9.2.3 Worker中对ZMQ连接的维护 159
    9.2.4 从ZooKeeper获取Topology的活跃情况 161
    9.2.5 小结 162
    9.3 创建Worker 163
    9.4 关闭Worker 164
    9.5 重要辅助方法介绍 165
    9.5.1 Worker中的接收函数 166
    9.5.2 Worker中的发送函数 167
    9.5.3 获取属于Worker的Executor 169
    9.5.4 创建Executor的接收消息队列和查找表 169
    9.5.5 下载Topology的配置项以及代码 170
    9.6 小结 171

    第10章 Executor 172
    10.1 Executor的数据 172
    10.2 Executor的输入和输出 174
    10.2.1 Executor的输入及处理 174
    10.2.2 Executor的输出及发送 175
    10.3 Spout类型的Executor 176
    10.3.1 准备消息循环的数据 176
    10.3.2 Spout输入处理函数 178
    10.3.3 Spout消息发送函数 180
    10.3.4 Spout对象的初始化 181
    10.3.5 消息循环 182
    10.4 Bolt类型的Executor 184
    10.4.1 准备消息循环的数据 184
    10.4.2 Bolt输入处理函数 184
    10.4.3 Bolt的消息发送函数 185
    10.4.4 Bolt对象的初始化 185
    10.4.5 消息循环 186
    10.5 创建Executor 187
    10.6 辅助函数介绍 188
    10.6.1 组件的Grouper函数 188
    10.6.2 带流量控制的错误报告方法 193
    10.6.3 触发系统Ticks 194
    10.7 小结 196

    第11章 Task 198
    11.1 Task的上下文对象 198
    11.1.1 TopologyContext 198
    11.1.2 GeneralTopologyContext 199
    11.1.3 WorkerTopologyContext 200
    11.1.4 TopologyContext 201
    11.2 创建Task数据 202
    11.3 mk-tasks-fn函数 204
    11.4 send-unanchored 205
    11.5 创建Task 206
    11.6 Storm中传输的消息以及序列化 206

    第12章 Storm的Ack框架 208
    12.1 Acker Bolt的实现分析 209
    12.2 启动消息跟踪 211
    12.3 消息跟踪 212
    12.4 Ack机制的例子 214

    第13章 系统运行统计 216
    13.1 基础数据结构以及更新算法 216
    13.1.1 滑动窗口的数据结构 216
    13.1.2 滑动窗口的回调函数 220
    13.1.3 滑动窗口集合的类型 221
    13.2 Storm中的统计信息 222
    13.2.1 Stats中定义的统计类别 222
    13.2.2 运行统计的更新 223
    13.2.3 运行统计的更新时间点 223
    13.2.4 获取统计数据 228
    13.3 运行统计的Thrift结构 229

    第14章 系统运行统计的另一种实现 231
    14.1 内置统计信息的计算 231
    14.1.1 MultiCountMetric 232
    14.1.2 MultiReducedMetric 233
    14.2 内置统计类型 234
    14.2.1 Spout类型的内置统计 235
    14.2.2 Bolt类型的内置统计 235
    14.3 统计触发消息 235
    14.3.1 注册统计信息 236
    14.3.2 触发消息的产生与发送 237
    14.3.3 处理统计触发消息 238
    14.4 运行统计收集节点 239
    14.5 SystemBolt 241

    第15章 事务Topology的实现 243
    15.1 事务Topology的实现概述 243
    15.1.1 事务Topology的类型 244
    15.1.2 事务Topology的类关系 245
    15.2 ITransactionalSpout接口 246
    15.3 协调Spout节点的执行器 248
    15.3.1 ZooKeeper客户端工具 248
    15.3.2 协调Spout的执行器 255
    15.3.3 消息发送Bolt的执行器 261
    15.4 CoordinatedBolt的实现分析 264
    15.4.1 TrackingInfo 264
    15.4.2 CoordinatedOutput-Collector 265
    15.4.3 CoordinatedBolt中的消息类型 267
    15.4.4 成员变量以及主要方法分析 267
    15.5 分区的事务类型 271
    15.5.1 分区的事务Spout接口 271
    15.5.2 分区的事务Spout的执行器 273
    15.6 分区的模糊事务Spout 277
    15.6.1 分区的模糊事务Spout的接口 277
    15.6.2 模糊的事务Spout执行器 278
    15.7 事务Topology的构建器 281
    15.7.1 构建器的构造函数及成员变量 281
    15.7.2 设置Bolt对象 283
    15.7.3 构建Topology 284
    15.7.4 输入流声明器 286

    第16章 事务Topology示例 288
    16.1 例子代码 288
    16.1.1 分区的事务Spout 288
    16.1.2 局部计数Bolt的实现 291
    16.1.3 全局计数Bolt的实现 292
    16.2 构建Topology 293
    16.3 事务处理示例 295

    第17章 Trident的Spout节点 298
    17.1 ITridentSpout接口 298
    17.1.1 BatchCoordinator接口 299
    17.1.2 TridentSpoutCoordinator 300
    17.1.3 MasterBatchCoordinator 301
    17.1.4 消息发送节点接口 306
    17.1.5 消息发送接口的执行器 306
    17.2 适配IRichSpout接口 307
    17.3 适配IBatchSpout接口 311
    17.4 Trident中分区的Spout类型 311
    17.4.1 分区Spout接口 311
    17.4.2 分区Spout的执行器 313
    17.5 模糊事务类型的Spout节点 316
    17.5.1 模糊事务类型的Spout接口 317
    17.5.2 模糊事务类型Spout的执行器 317
    17.6 构建Spout节点 320
    17.6.1 TridentTopology的newStream调用 320
    17.6.2 TridentTopology中newDRPCStream调用 321

    第18章 Trident的存储 322
    18.1 存储的基本接口 322
    18.2 MapState接口的实现 323
    18.2.1 非事务类型的存储 324
    18.2.2 事务类型的存储 325
    18.2.3 模糊事务类型存储 327
    18.3 值的序列化方法 329
    18.4 数据更新接口 330
    18.4.1 CombinerValueUpdater 330
    18.4.2 ReducerValueUpdater 331
    18.5 存储更新接口 331
    18.5.1 ReducerAggStateUpdater 332
    18.5.2 MapReducerAggStateUpdater 332
    18.5.3 BaseStateUpdater 334
    18.6 创建存储对象 334

    第19章 Trident消息 336
    19.1 ValuePointer 336
    19.2 Factory接口及其实现 337
    19.2.1 ProjectionFactory 338
    19.2.2 FreshOutputFactory 339
    19.2.3 OperationOutputFactory 339
    19.2.4 RootFactory 341
    19.3 消息工厂的例子 342
    19.4 TridentTupleView 342
    19.5 ComboList 343

    第20章 Trident操作与处理节点 346
    20.1 操作的基本接口 346
    20.2 Aggregator实现 347
    20.2.1 GroupedAggregator 348
    20.2.2 ChainedAggregatorImpl 350
    20.2.3 SingleEmitAggregator 353
    20.3 用户接口及其实现 355
    20.3.1 ReducerAggregator接口及其实现 355
    20.3.2 CombinerAggregator接口及其实现 356
    20.4 所有处理节点的上下文 357
    20.4.1 单个处理节点的上下文 358
    20.4.2 操作执行的上下文 359
    20.5 Trident的输出收集器 359
    20.5.1 FreshCollector 359
    20.5.2 CaptureCollector 360
    20.5.3 GroupCollector 360
    20.5.4 AppendCollector 361
    20.5.5 AddIdCollector 361
    20.6 Trident的处理节点 362
    20.6.1 TridentProcessor接口 363
    20.6.2 PartitionPersistProcessor 363
    20.6.3 StateQueryProcessor 365
    20.7 聚集器的执行 367

    第21章 Trident流的基本操作 370
    21.1 流的成员变量和基础方法 370
    21.1.1 流的成员变量 370
    21.1.2 流节点名字 370
    21.1.3 流的映射检查 372
    21.1.4 添加节点 372
    21.2 流映射操作 373
    21.3 流的分组操作 374
    21.4 流的逐行操作 374
    21.5 流的分区操作 374
    21.6 流的单聚集器聚集操作 376
    21.7 流的多聚集器聚集操作 377
    21.7.1 ChainedAggregatorDeclarer 377
    21.7.2 分区上的局部聚集操作 379
    21.7.3 全局聚集操作 379
    21.7.4 含有多个聚集器的partitionAggregate操作 381
    21.8 流的聚集操作 382
    21.9 流的分区写入操作 383
    21.10 查询操作 384
    21.11 流的全局写入操作 384
    21.12 流的操作与有向图构建 384
    21.13 分组流 385
    21.13.1 成员变量 385
    21.13.2 逐行操作 385
    21.13.3 分组流的分区聚集操作 386
    21.13.4 查询操作 386
    21.13.5 聚集操作 386
    21.13.6 写入操作 387
    21.14 利用流操作来构建Topology的例子 388

    第22章 Trident中流的交互操作 392
    22.1 基本接口 392
    22.2 JoinerMultiReducer 393
    22.2.1 成员变量及构造函数 393
    22.2.2 execute方法 395
    22.2.3 complete方法 397
    22.3 GroupedMultiReducerExecutor 397
    22.4 MultiReducerProcessor 399
    22.5 连接操作 401
    22.6 流合并操作 403

    第23章 Trident中的Bolt节点 404
    23.1 SubTopologyBolt 404
    23.1.1 输入准备 404
    23.1.2 成员变量 405
    23.1.3 主要方法 406
    23.2 Trident中的Bolt执行器 409
    23.2.1 ITridentBatchBolt接口 410
    23.2.2 TrackedBatch 410
    23.2.3 定制的输出收集器 412
    23.2.4 消息类型 414
    23.2.5 数据成员分析 414
    23.2.6 主要成员方法分析 416

    第24章 Trident的执行优化 420
    24.1 节点类型 420
    24.1.1 基本节点类型 420
    24.1.2 Spout节点 422
    24.1.3 处理节点 422
    24.1.4 分区节点 423
    24.2 执行优化算法 426
    24.2.1 节点组 426
    24.2.2 节点组的合并算法 427
    24.2.3 处理节点组中的分区节点 431
    24.2.4 节点组以不同的方式收听相同流 431
    24.2.5 执行优化后的节点组 434
    24.2.6 计算节点组的并行度 434

    第25章 Trident与DRPC 437
    25.1 DRPC服务器 438
    25.1.1 DRPC服务器的成员变量 438
    52.1.2 DRPC用户接口及其实现 439
    25.1.3 DRPC Topology端接口及其实现 440
    25.1.4 启动DRPC服务器 441
    25.2 DRPC的客户端 442
    25.3 DRPC中Spout节点 443
    25.4 DRPC Spout的执行器 446
    25.5 completeDRPC操作 449
    25.6 返回DRPC结果 451

    第26章 Trident的Topology构建器 453
    26.1 基本工具函数 453
    26.1.1 committerBatches 453
    26.1.2 fleshOutStreamBatchIds 453
    26.1.3 getOutputStreamBatchGroups 454
    26.2 TridentTopologyBuilder 455
    26.2.1 成员变量 455
    26.2.2 设置Spout节点 456
    26.2.3 设置Bolt节点 458
    26.3 一个例子 460

    第27章 多语言 462
    27.1 ShellProcess 462
    27.2 ShellBolt 464
    27.2.1 成员变量 464
    27.2.2 读写线程 465
    27.3 ShellSpout 467

    第28章 Storm中的配置项 469
查看详情
系列丛书 / 更多
Storm源码分析
第一行代码:Android
郭霖 著
Storm源码分析
啊哈!算法
啊哈磊 著
Storm源码分析
推荐系统实践
项亮 著
Storm源码分析
深入浅出Node.js
朴灵 著
Storm源码分析
SEO教程:搜索引擎优化入门与进阶(第3版)
吴泽欣 著
Storm源码分析
Unity 3D游戏开发
宣雨松 著
Storm源码分析
Go语言编程
许式伟 著
Storm源码分析
iOS开发指南 从零基础到App Store上架(第3版)
关东升 著
Storm源码分析
JavaScript设计模式与开发实践
曾探 著
Storm源码分析
Docker 容器与容器云(第2版)
浙江大学SEL实验室 著
Storm源码分析
深入React技术栈
陈屹 著
Storm源码分析
腾云:—云计算和大数据时代网络技术揭秘
徐立冰 著
相关图书 / 更多
Storm源码分析
Stata数据分析应用(第二版)21世纪经济与管理精编教材经济学系列
朱顺泉;夏婷
Storm源码分析
Stahl精神药理学精要:案例研究(第2卷)
[美]托马斯·施瓦茨(Thomas L.Schwartz) 原著;[英]史蒂文·斯塔尔(Stephen M. Stahl)
Storm源码分析
Stokes层的转捩机理及预测
孔玮
Storm源码分析
Style3D标准教程
黄伟
Storm源码分析
Stata正则表达式及其在财务数据中的应用
李春涛 著
Storm源码分析
Steam教育绘本:图形概念全知道(全4册)(圆形+三角形+三角形和多边形+周长、面积和体积)
[美]大卫·A.阿德勒;爱德华·米勒;南希·托宾
Storm源码分析
Stable Diffusion AI绘画教程:文生图+图生图+提示词+模型训练+插件应用
龙飞 编著
Storm源码分析
Stackelberg模型在非合作博弈控制问题中的应用研究
李小倩
Storm源码分析
StudiesonDevelopmentofaMulti-ScaleandMult
Dianyu、E、Jiaxin、Cui 著
Storm源码分析
StudyandEvaluationofZoysiaGermplasmResources
李曼莉 著
Storm源码分析
Stata统计分析从入门到精通
杨维忠;张甜
Storm源码分析
Structural Mechanics
Zhu Cimian;Zhang Wei
您可能感兴趣 / 更多
Storm源码分析
企业专利组合辨识与专利价值研究
李明、陈向东 著
Storm源码分析
单片机原理与接口技术(第6版)/“十三五”职业教育国家规划教材
李明、毕万新、新世纪高职高专教材编审委员会 编
Storm源码分析
汽车电工电子
李明、曹秘 编
Storm源码分析
冷庐医话(中医古籍名家点评丛书)
李明、沈成 著
Storm源码分析
装配式混凝土带抗剪键叠合板受力性能及设计方法
李明、吴潜、张壮南 著
Storm源码分析
商务资讯翻译
李明、陶庆 编
Storm源码分析
高等院校多维评估与质量保障:贵州大学教育教学“五专一综”年度质量报告2013
李明、王代星、安世遨、叶文勤 著
Storm源码分析
叙事调解:用故事化解冲突
李明、元雪晴、曹杏娥 译;[美]杰拉尔德·蒙克;约翰·温斯莱德
Storm源码分析
小学学霸单元期末标准卷:数学(三年级上BS版)
李明、牛胜玉 编
Storm源码分析
基础笔译/新核心翻译硕士(MTI)系列教材
李明、陶庆、李明 编
Storm源码分析
宁夏栽培中药材
李明、张新慧 著
Storm源码分析
牛羊生产(第2版)/中等职业教育农业部“十三五”规划教材
李明、程凌 编