当前位置:主页 > 计算机电子书 > 行业软件及应用 > Storm下载
Storm源码分析

Storm源码分析 PDF 清晰版

  • 更新:2021-11-01
  • 大小:82.2MB
  • 类别:Storm
  • 作者:李明、王晓鹏
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

《Storm源码分析》从源代码的角度详细分析了Storm的设计与实现,共分为三个部分,第一部分介绍了Storm的基本原理以及Storm集群系统的搭建方法,第二部分深入剖析了Storm的底层架构,如Nimbus、Supervisor、Worker以及Task,第三部分系统讨论了Storm如何实现可靠的消息传输,如TransactionTopology以及Trident。

《Storm源码分析》适用于程序员、架构师以及计算机专业的学生。

目录

  • 第1章总体架构与代码结构1
  • 1.1Storm的总体结构1
  • 1.2Storm的元数据3
  • 1.2.1元数据介绍3
  • 1.2.2Storm怎么使用这些元数据4
  • 1.3Storm的代码结构7
  • 1.3.1Clojure代码7
  • 1.3.2Java代码8
  • 1.3.3Trident代码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提交Topology15
  • 2.3WordCountTopology介绍15
  • 2.3.1RandomSentenceSpout15
  • 2.3.2SplitSentence16
  • 2.3.3WordCount17
  • 2.3.4WordCountTopology构建17
  • 第3章Storm编程基础19
  • 3.1Fields定义19
  • 3.2Tuple接口20
  • 3.3常用声明接口21
  • 3.3.1配置声明接口22
  • 3.3.2输入声明接口23
  • 3.3.3输出字段声明接口24
  • 3.3.4组件声明接口25
  • 3.4Spout输出收集器25
  • 3.4.1ISpoutOutputCollector和SpoutOutputCollector25
  • 3.4.2Executor中ISpoutOutputCollector的实现27
  • 3.5Bolt输出收集器28
  • 3.5.1IOutputCollector和OutputCollector28
  • 3.5.2IBasicOutputCollector和BasicOutputCollector31
  • 3.5.3BatchOutputCollector和BatchOutputCollectorImpl32
  • 3.5.4Executor中的IOutputCollector实现34
  • 3.6组件接口35
  • 3.7Spout接口35
  • 3.7.1ISpout36
  • 3.7.2IRichSpout38
  • 3.8Bolt接口38
  • 3.8.1IBolt38
  • 3.8.2IRichBolt40
  • 3.8.3IBasicBolt40
  • 3.8.4IBatchBolt42
  • 3.8.5小结45
  • 3.9Storm数据结构46
  • 3.9.1GlobalStreamId46
  • 3.9.2消息分组方式46
  • 3.9.3StreamInfo47
  • 3.9.4ShellComponent47
  • 3.9.5ComponentObject47
  • 3.9.6ComponentCommon47
  • 3.9.7SpoutSpec48
  • 3.9.8Bolt48
  • 3.9.9StormTopology49
  • 3.9.10TopologySummary49
  • 3.9.11SupervisorSummary49
  • 3.9.12ClusterSummary50
  • 3.9.13BoltStats50
  • 3.9.14SpoutStats50
  • 3.9.15统计信息50
  • 3.9.16DRPC51
  • 3.10基本Topology构建器52
  • 3.10.1TopologyBuilder52
  • 3.10.2ConfigGetter55
  • 3.10.3SpoutGetter和BoltGetter55
  • 3.10.4一个简单例子56
  • 3.11异常处理57
  • 第4章基础函数和工具类58
  • 4.1计时器58
  • 4.1.1mk-timer58
  • 4.1.2check-active!60
  • 4.1.3schedule60
  • 4.1.4schedule-recurring60
  • 4.1.5cancel-timer61
  • 4.2async-loop61
  • 4.3event-manager62
  • 4.4even-sampler63
  • 4.5ZooKeeper工具类64
  • 4.5.1mk-client64
  • 4.5.2create-node65
  • 4.5.3get-data65
  • 4.5.4进程内启动ZooKeeper66
  • 4.6LocalState66
  • 4.7ClusterState68
  • 4.8StormClusterState69
  • 第5章通信机制71
  • 5.1进程间通信71
  • 5.1.1进程间通信协议71
  • 5.1.2LocalCluster模式实现72
  • 5.1.3分布式模式实现73
  • 5.1.4协议使用75
  • 5.2进程内通信77
  • 5.2.1Disruptor Queue的使用77
  • 5.2.2DisruptorQueue的Clojure处理器80
  • 第6章Nimbus81
  • 6.1Nimbus服务接口定义81
  • 6.2Nimbus相关的数据结构83
  • 6.2.1Java 数据结构83
  • 6.2.2Clojure数据结构84
  • 6.3Nimbus中的线程介绍86
  • 6.3.1mk-assignments87
  • 6.3.2do-cleanup89
  • 6.3.3clean-inbox90
  • 6.4Topology状态转移90
  • 6.4.1transition-name!90
  • 6.4.2transition!91
  • 6.4.3state-transitions92
  • 6.5启动Nimbus服务96
  • 6.5.1launch-server!96
  • 6.5.2service-handler97
  • 6.6关闭Nimbus服务99
  • 6.7主要服务方法99
  • 6.7.1submitTopology99
  • 6.7.2kill、rebalance、activate、deactivate 方法101
  • 6.7.3文件上传与下载102
  • 6.7.4获取UI所需的信息104
  • 6.7.3获取Topology106
  • 6.7.6获取Storm配置项107
  • 6.8主要辅助方法107
  • 6.8.1system-topology!107
  • 6.8.2normalize-topology112
  • 6.8.3compute-new-topology->executor->node+port114
  • 6.8.4compute-executors117
  • 第7章Scheduler119
  • 7.1IScheduler接口119
  • 7.2EvenScheduler120
  • 7.2.1schedule-topolpgies-evenly120
  • 7.2.2schedule-topology121
  • 7.2.3get-alive-assigned-node+port->executors122
  • 7.2.4sort-slots123
  • 7.3DefaultScheduler124
  • 7.3.1default-schedule124
  • 7.3.2slots-can-reassign126
  • 7.3.3bad-slots126
  • 7.4IsolationScheduler127
  • 7.5调度示例131
  • 7.5.1EvenScheduler和DefaultScheduler131
  • 7.5.2IsolationScheduler134
  • 第8章Scheduler137
  • 8.1与Supervisor相关的数据结构137
  • 8.1.1standalone-supervisor137
  • 8.1.2Supervisor的数据138
  • 8.1.3本地存储数据139
  • 8.2Supervisor中的线程140
  • 8.2.1计时器线程140
  • 8.2.2同步Nimbus任务的线程140
  • 8.2.3管理Worker进程的线程143
  • 8.3启动Supervisor145
  • 8.4关闭Supervisor147
  • 8.5重要方法介绍147
  • 8.5.1launch-worker147
  • 8.5.2read-allocated-workers150
  • 8.5.3wait-for-worker-launch151
  • 8.5.4shutdown-worker152
  • 8.5.5download-storm-code152
  • 第9章Worker155
  • 9.1Worker中的数据155
  • 9.2Worker中的计时器157
  • 9.2.1Worker的心跳157
  • 9.2.2Executor的心跳158
  • 9.2.3Worker中对ZMQ连接的维护159
  • 9.2.4从ZooKeeper获取Topology的活跃情况161
  • 9.2.5小结162
  • 9.3创建Worker163
  • 9.4关闭Worker164
  • 9.5重要辅助方法介绍165
  • 9.5.1Worker中的接收函数166
  • 9.5.2Worker中的发送函数167
  • 9.5.3获取属于Worker的Executor169
  • 9.5.4创建Executor的接收消息队列和查找表169
  • 9.5.5下载Topology的配置项以及代码170
  • 9.6小结171
  • 第10章Executor172
  • 10.1Executor的数据172
  • 10.2Executor的输入和输出174
  • 10.2.1Executor的输入及处理174
  • 10.2.2Executor的输出及发送175
  • 10.3Spout类型的Executor176
  • 10.3.1准备消息循环的数据176
  • 10.3.2Spout输入处理函数178
  • 10.3.3Spout消息发送函数180
  • 10.3.4Spout对象的初始化181
  • 10.3.5消息循环182
  • 10.4Bolt类型的Executor184
  • 10.4.1准备消息循环的数据184
  • 10.4.2Bolt输入处理函数184
  • 10.4.3Bolt的消息发送函数185
  • 10.4.4Bolt对象的初始化185
  • 10.4.5消息循环186
  • 10.5创建Executor187
  • 10.6辅助函数介绍188
  • 10.6.1组件的Grouper函数188
  • 10.6.2带流量控制的错误报告方法193
  • 10.6.3触发系统Ticks194
  • 10.7小结196
  • 第11章Task198
  • 11.1Task的上下文对象198
  • 11.1.1TopologyContext198
  • 11.1.2GeneralTopologyContext199
  • 11.1.3WorkerTopologyContext200
  • 11.1.4TopologyContext201
  • 11.2创建Task数据202
  • 11.3mk-tasks-fn函数204
  • 11.4send-unanchored205
  • 11.5创建Task206
  • 11.6Storm中传输的消息以及序列化206
  • 第12章Storm的Ack框架208
  • 12.1Acker Bolt的实现分析209
  • 12.2启动消息跟踪211
  • 12.3消息跟踪212
  • 12.4Ack机制的例子214
  • 第13章系统运行统计216
  • 13.1基础数据结构以及更新算法216
  • 13.1.1滑动窗口的数据结构216
  • 13.1.2滑动窗口的回调函数220
  • 13.1.3滑动窗口集合的类型221
  • 13.2Storm中的统计信息222
  • 13.2.1Stats中定义的统计类别222
  • 13.2.2运行统计的更新223
  • 13.2.3运行统计的更新时间点223
  • 13.2.4获取统计数据228
  • 13.3运行统计的Thrift结构229
  • 第14章系统运行统计的另一种实现231
  • 14.1内置统计信息的计算231
  • 14.1.1MultiCountMetric232
  • 14.1.2MultiReducedMetric233
  • 14.2内置统计类型234
  • 14.2.1Spout类型的内置统计235
  • 14.2.2Bolt类型的内置统计235
  • 14.3统计触发消息235
  • 14.3.1注册统计信息236
  • 14.3.2触发消息的产生与发送237
  • 14.3.3处理统计触发消息238
  • 14.4运行统计收集节点239
  • 14.5SystemBolt241
  • 第15章事务Topology的实现243
  • 15.1事务Topology的实现概述243
  • 15.1.1事务Topology的类型244
  • 15.1.2事务Topology的类关系245
  • 15.2ITransactionalSpout接口246
  • 15.3协调Spout节点的执行器248
  • 15.3.1ZooKeeper客户端工具248
  • 15.3.2协调Spout的执行器255
  • 15.3.3消息发送Bolt的执行器261
  • 15.4CoordinatedBolt的实现分析264
  • 15.4.1TrackingInfo264
  • 15.4.2CoordinatedOutput-Collector265
  • 15.4.3CoordinatedBolt中的消息类型267
  • 15.4.4成员变量以及主要方法分析267
  • 15.5分区的事务类型271
  • 15.5.1分区的事务Spout接口271
  • 15.5.2分区的事务Spout的执行器273
  • 15.6分区的模糊事务Spout277
  • 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构建Topology284
  • 15.7.4输入流声明器286
  • 第16章事务Topology示例288
  • 16.1例子代码288
  • 16.1.1分区的事务Spout288
  • 16.1.2局部计数Bolt的实现291
  • 16.1.3全局计数Bolt的实现292
  • 16.2构建Topology293
  • 16.3事务处理示例295
  • 第17章Trident的Spout节点298
  • 17.1ITridentSpout接口298
  • 17.1.1BatchCoordinator接口299
  • 17.1.2TridentSpoutCoordinator300
  • 17.1.3MasterBatchCoordinator301
  • 17.1.4消息发送节点接口306
  • 17.1.5消息发送接口的执行器306
  • 17.2适配IRichSpout接口307
  • 17.3适配IBatchSpout接口311
  • 17.4Trident中分区的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.1TridentTopology的newStream调用320
  • 17.6.2TridentTopology中newDRPCStream调用321
  • 第18章Trident的存储322
  • 18.1存储的基本接口322
  • 18.2MapState接口的实现323
  • 18.2.1非事务类型的存储324
  • 18.2.2事务类型的存储325
  • 18.2.3模糊事务类型存储327
  • 18.3值的序列化方法329
  • 18.4数据更新接口330
  • 18.4.1CombinerValueUpdater330
  • 18.4.2ReducerValueUpdater331
  • 18.5存储更新接口331
  • 18.5.1ReducerAggStateUpdater332
  • 18.5.2MapReducerAggStateUpdater332
  • 18.5.3BaseStateUpdater334
  • 18.6创建存储对象334
  • 第19章Trident消息336
  • 19.1ValuePointer336
  • 19.2Factory接口及其实现337
  • 19.2.1ProjectionFactory338
  • 19.2.2FreshOutputFactory339
  • 19.2.3OperationOutputFactory339
  • 19.2.4RootFactory341
  • 19.3消息工厂的例子342
  • 19.4TridentTupleView342
  • 19.5ComboList343
  • 第20章Trident操作与处理节点346
  • 20.1操作的基本接口346
  • 20.2Aggregator实现347
  • 20.2.1GroupedAggregator348
  • 20.2.2ChainedAggregatorImpl350
  • 20.2.3SingleEmitAggregator353
  • 20.3用户接口及其实现355
  • 20.3.1ReducerAggregator接口及其实现355
  • 20.3.2CombinerAggregator接口及其实现356
  • 20.4所有处理节点的上下文357
  • 20.4.1单个处理节点的上下文358
  • 20.4.2操作执行的上下文359
  • 20.5Trident的输出收集器359
  • 20.5.1FreshCollector359
  • 20.5.2CaptureCollector360
  • 20.5.3GroupCollector360
  • 20.5.4AppendCollector361
  • 20.5.5AddIdCollector361
  • 20.6Trident的处理节点362
  • 20.6.1TridentProcessor接口363
  • 20.6.2PartitionPersistProcessor363
  • 20.6.3StateQueryProcessor365
  • 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.1ChainedAggregatorDeclarer377
  • 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.2JoinerMultiReducer393
  • 22.2.1成员变量及构造函数393
  • 22.2.2execute方法395
  • 22.2.3complete方法397
  • 22.3GroupedMultiReducerExecutor397
  • 22.4MultiReducerProcessor399
  • 22.5连接操作401
  • 22.6流合并操作403
  • 第23章Trident中的Bolt节点404
  • 23.1SubTopologyBolt404
  • 23.1.1输入准备404
  • 23.1.2成员变量405
  • 23.1.3主要方法406
  • 23.2Trident中的Bolt执行器409
  • 23.2.1ITridentBatchBolt接口410
  • 23.2.2TrackedBatch410
  • 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.2Spout节点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与DRPC437
  • 25.1DRPC服务器438
  • 25.1.1DRPC服务器的成员变量438
  • 52.1.2DRPC用户接口及其实现439
  • 25.1.3DRPC Topology端接口及其实现440
  • 25.1.4启动DRPC服务器441
  • 25.2DRPC的客户端442
  • 25.3DRPC中Spout节点443
  • 25.4DRPC Spout的执行器446
  • 25.5completeDRPC操作449
  • 25.6返回DRPC结果451
  • 第26章Trident的Topology构建器453
  • 26.1基本工具函数453
  • 26.1.1committerBatches453
  • 26.1.2fleshOutStreamBatchIds453
  • 26.1.3getOutputStreamBatchGroups454
  • 26.2TridentTopologyBuilder455
  • 26.2.1成员变量455
  • 26.2.2设置Spout节点456
  • 26.2.3设置Bolt节点458
  • 26.3一个例子460
  • 第27章多语言462
  • 27.1ShellProcess462
  • 27.2ShellBolt464
  • 27.2.1成员变量464
  • 27.2.2读写线程465
  • 27.3ShellSpout467
  • 第28章Storm中的配置项469

资源下载

资源下载地址1:https://pan.baidu.com/s/1QojDqkqSxuTrxQa8v_tuHg

网友留言