《分布式实时处理系统 原理 架构与实现》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:卢誉声著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111539964
  • 页数:482 页
图书介绍:全书分为3篇:第一篇详细讲解本书将要开发的分布式实时计算系统所涉及的相关技术,特别针对C++11的新特性着重介绍。第二篇剖析分布式计算系统编程细节,其中对每个重要的概念、模型和函数都加以阐述。第三篇主要关注实战用例,将编写数个极具实践价值的应用程序,为开发者提供参考。通过阅读本书,读者不仅能开发出一套基于C/C++实现的分布式实时计算系统,而且还可以以此学习和了解服务器编程接口设计以及UNIX服务器开发的多个重要主题,对未来实际应用与开发提供参考。

第1章 分布式计算概述 1

1.1 分布式概念 1

1.2 分布式计算及其原理 2

1.3 分布式系统特性 3

1.3.1 容错性 3

1.3.2 高可扩展性 4

1.3.3 开放性 5

1.3.4 并发处理能力 5

1.3.5 透明性 6

1.4 通用分布式计算系统 6

1.4.1 Apache Hadoop 6

1.4.2 Apache Spark 8

1.4.3 Apache Storm 9

1.5 分布式存储系统 10

1.5.1 分布式存储概念 10

1.5.2 分布式存储系统特点 12

1.5.3 分布式存储系统分类 12

1.5.4 常见分布式存储系统 13

1.6 本章小结 14

第2章 分布式系统通信基础 15

2.1 时代的浪潮 15

2.1.1 集中式通信网 16

2.1.2 去中心化 16

2.2 可靠的数据链路 17

2.2.1 数据分组 17

2.2.2 帧同步 18

2.2.3 差错控制 18

2.2.4 链路管理 18

2.2.5 问题与解决方案 19

2.3 分层架构 19

2.4 网络层 22

2.4.1 寻找路径 22

2.4.2 网络分层 23

2.4.3 TCP/IP概述 23

2.4.4 IP协议 24

2.5 传输层 30

2.5.1 数据自动分包 30

2.5.2 端到端的传输 30

2.5.3 数据的可靠传输 30

2.6 应用层 35

2.6.1 ping 35

2.6.2 telnet 36

2.6.3 OSPF 36

2.6.4 DNS 36

2.6.5 HTTP协议 37

2.7 基于消息协议的公告牌 38

2.7.1 需求描述 38

2.7.2 制定协议 38

2.8 分布式通信举例——MapReduce 39

2.9 本章小结 41

第3章 通信系统高层抽象 42

3.1 RPC介绍 42

3.2 RESTful 44

3.2.1 资源和表现层 45

3.2.2 状态转移 45

3.2.3 RESTful总结 46

3.3 消息队列 46

3.4 序列化 49

3.5 使用Thrift实现公告牌服务 50

3.5.1 Apache Thrift介绍 51

3.5.2 安装Apache Thrift 51

3.5.3 编写Thrift文件 52

3.5.4 实现服务器 53

3.5.5 实现客户端 54

3.6 本章小结 56

第4章 走进C++高性能编程 57

4.1 基于C++的留言板系统 58

4.1.1 基于Socket的通信 58

4.1.2 C++中的内存与资源管理 64

4.2 来自服务器的天书 69

4.2.1 编码 69

4.2.2 C++98的编码缺陷 72

4.2.3 C++11编码支持 73

4.3 繁忙的服务器 75

4.3.1 分身乏术 75

4.3.2 fork——分身术 76

4.3.3 进程间通信 79

4.3.4 轻量级分身——线程 85

4.3.5 C++11线程 86

4.3.6 竞争问题与解决方案 88

4.3.7 多线程优化 95

4.3.8 异步I/O 99

4.4 消失不见的内存 105

4.4.1 内存分配与内存碎片 106

4.4.2 tcmalloc 108

4.4.3 内存池 110

4.5 本章小结 112

第5章 分布式实时处理系统 113

5.1 Hadoop与MapReduce 113

5.1.1 HDFS 114

5.1.2 MapReduce模型 115

5.2 Storm实时处理系统 129

5.2.1 历史 129

5.2.2 计算模型 130

5.2.3 总体架构 133

5.2.4 Storm元数据 133

5.2.5 Storm与Hadoop比较 138

5.3 有保证的消息处理 139

5.3.1 完全处理与元组树 139

5.3.2 元组的唯一标识 139

5.3.3 确认和失败 141

5.3.4 高效实现 143

5.4 本章小结 144

第6章 实时处理系统编程接口设计 145

6.1 总体架构设计 145

6.1.1 Hurricane与Storm比较 145

6.1.2 总体架构 146

6.1.3 任务接口 148

6.2 消息源接口设计 149

6.3 消息处理器接口设计 150

6.4 数据收集器设计 151

6.5 元组接口设计 154

6.6 序列化接口设计 160

6.7 本章小结 161

第7章 服务组件设计与实现 162

7.1 Executor设计与实现 162

7.1.1 事件驱动的消息队列 162

7.1.2 动态装载技术 167

7.1.3 Executor实现 169

7.2 Task设计与实现 171

7.3 本章小结 172

第8章 管理服务设计与实现 173

8.1 President功能与设计 173

8.2 President实现 174

8.2.1 简单的网络通信实现 175

8.2.2 Topology装载实现 182

8.2.3 Manager管理调度实现 184

8.2.4 序列化实现 193

8.3 本章小结 198

第9章 实时处理系统编程接口实现 199

9.1 消息源接口实现 200

9.1.1 消息源执行器 200

9.1.2 WordCount实现实例 205

9.2 消息处理单元接口实现 207

9.2.1 消息处理单元执行器 207

9.2.2 事件处理 212

9.2.3 WordCount实现实例 215

9.3 数据收集器实现 218

9.3.1 分发策略 218

9.3.2 传输层实现 224

9.4 本章小结 226

第10章 可靠消息处理 227

10.1 基本概念 227

10.1.1 完全处理 227

10.1.2 失败与重发 229

10.2 接口设计 229

10.3 具体实现 233

10.3.1 简单实现 233

10.3.2 高效实现 235

10.4 本章小结 237

第11章 通信系统设计与实现 238

11.1 I/O多路复用方案解析 239

11.1.1 基本网络编程接口 239

11.1.2 非阻塞的服务器程序 241

11.1.3 使用select()接口的基于事件驱动的服务器模型 242

11.1.4 使用epoll实现异步事件通知模型 245

11.2 基础工具 249

11.2.1 线程工具 250

11.2.2 日志工具 254

11.3 传输层实现 263

11.3.1 Reactor模式 263

11.3.2 定义抽象TP传输层 264

11.3.3 实现基于epoll的TP传输层 269

11.3.4 实现基于IOCP的TP传输层 290

11.4 应用层HTTP实现 307

11.4.1 HttpContext 307

11.4.2 HttpRequest 311

11.4.3 HttpResponse 313

11.4.4 HttpConnection 315

11.4.5 HttpServer 317

11.4.6 总结 319

11.5 跨平台分割编译 320

11.5.1 Makefile 320

11.5.2 Kake 323

11.6 与实时处理系统集成 325

11.6.1 修改NetListener 325

11.6.2 修改NetConnector 327

11.7 本章小结 330

第12章 事务性Topology实现 331

12.1 Exact-once语义解决方案 331

12.2 设计细节 333

12.2.1 构造事务性Topology 333

12.2.2 消息处理单元 334

12.3 事务性Topology API 337

12.3.1 消息处理单元 337

12.3.2 事务性消息源 339

12.4 本章小结 339

第13章 多语言接口 340

13.1 C语言通用接口 340

13.1.1 元组接口 342

13.1.2 消息源接口 346

13.1.3 消息处理单元接口 349

13.1.4 计算拓扑接口 352

13.2 Python接口 354

13.2.1 ctypes 354

13.2.2 元组接口 356

13.2.3 消息源接口 359

13.2.4 消息处理单元接口 360

13.2.5 计算拓扑接口 361

13.2.6 应用示例 364

13.3 JavaScript接口 365

13.3.1 V8引擎 366

13.3.2 Node.js 366

13.3.3 V8的互操作接口 367

13.3.4 任务接口 368

13.3.5 消息源接口 369

13.3.6 消息处理单元接口 370

13.3.7 计算拓扑接口 371

13.3.8 应用示例 373

13.4 Java接口 375

13.4.1 任务接口 375

13.4.2 消息源接口 376

13.4.3 消息处理单元接口 377

13.4.4 计算拓扑接口 377

13.4.5 本地代码 380

13.4.6 应用示例 382

13.5 Swift接口 384

13.5.1 应用范围 385

13.5.2 任务接口 385

13.5.3 消息源接口 386

13.5.4 消息处理单元接口 387

13.5.5 计算拓扑接口 388

13.6 本章小结 390

第14章 Squared设计与实现——实现高级抽象元语 391

14.1 Storm Trident介绍 391

14.1.1 Squared示例 391

14.1.2 DRPC示例 394

14.2 Squared实现 396

14.2.1 SquaredTopology和Spout 396

14.2.2 SquaredBolt 401

14.2.3 Stream 405

14.2.4 状态存储 410

14.2.5 DRPC实现 412

14.2.6 操作与处理节点 416

14.2.7 流操作 419

14.3 本章小结 423

第15章 实战:日志流处理 425

15.1 日志流处理设计方案 425

15.2 实现Topology 427

15.2.1 编写消息源 427

15.2.2 编写索引消息处理单元 428

15.2.3 编写统计消息处理单元 429

15.3 本章小结 431

第16章 实战:频繁组合查找 432

16.1 背景介绍 432

16.1.1 数据挖掘概念 432

16.1.2 关联规则和频繁项集 433

16.1.3 啤酒与尿布 435

16.2 频繁二项集挖掘方法 435

16.2.1 频繁二项集 435

16.2.2 算法设计思路 438

16.2.3 Hurricane实现思路 439

16.3 编写Spout 439

16.4 编写Bolt 441

16.4.1 SplitBolt 441

16.4.2 PairCountBolt 442

16.4.3 PairTotalCountBolt 443

16.4.4 ConfidenceComputeBolt 444

16.4.5 SupportComputeBolt 445

16.4.6 FilterBolt 447

16.5 编写Topology 448

16.6 本章小结 449

第17章 实战:在AWS和阿里云上部署Hurricane实时处理系统 450

17.1 AWS部署 450

17.1.1 搭建虚拟私有云 452

17.1.2 配置安全组 455

17.1.3 加载EC2实例 456

17.1.4 弹性IP地址管理 461

17.2 阿里云部署 464

17.2.1 创建虚拟私有云 464

17.2.2 管理安全组 467

17.2.3 创建ECS 468

17.2.4 SSH登录 471

17.3 Hurricane分布式部署与管理 471

17.3.1 分布式部署原理 472

17.3.2 分布式安装配置 472

17.3.3 分布式启动 476

17.4 部署分布式实时处理系统 477

17.5 未来之路 478

17.6 本章小结 479