作品简介

本书是一本由浅入深并详细讲解编写一套全新的基于C/C++的实时处理系统的编程实战书。本书从基础知识开始,到实时数据系统的架构设计,到代码的实际编写,逐步实现一个完整的实时数据处理系统。本书把这套全新的高性能分布式实时处理系统命名为Hurricane,该单词与Storm涵义类似,但略有不同,其中维基百科对Hurricane的解释是“A storm that has very strong fast winds and that moves over water”,即“在水面高速移动的飓风(storm)”。同时,为了支持高性能的实时处理系统,我们必须提供高性能的网络层,能够支持大量的并发,因此本书设计实现了一套跨平台的网络库Meshy,并将其作为Hurricane实时处理系统的传输层。

作者:卢誉声

作品目录

  • 本书赞誉
  • 序一
  • 序二
  • 序三
  • 前言
  • 第1章 分布式计算概述
  • 1.1 分布式概念
  • 1.2 分布式计算及其原理
  • 1.3 分布式系统特性
  • 1.3.1 容错性
  • 1.3.2 高可扩展性
  • 1.3.3 开放性
  • 1.3.4 并发处理能力
  • 1.3.5 透明性
  • 1.4 通用分布式计算系统
  • 1.4.1 Apache Hadoop
  • 1.4.2 Apache Spark
  • 1.4.3 Apache Storm
  • 1.5 分布式存储系统
  • 1.5.1 分布式存储概念
  • 1.5.2 分布式存储系统特点
  • 1.5.3 分布式存储系统分类
  • 1.5.4 常见分布式存储系统
  • 1.6 本章小结
  • 第2章 分布式系统通信基础
  • 2.1 时代的浪潮
  • 2.1.1 集中式通信网
  • 2.1.2 去中心化
  • 2.2 可靠的数据链路
  • 2.2.1 数据分组
  • 2.2.2 帧同步
  • 2.2.3 差错控制
  • 2.2.4 链路管理
  • 2.2.5 问题与解决方案
  • 2.3 分层架构
  • 2.4 网络层
  • 2.4.1 寻找路径
  • 2.4.2 网络分层
  • 2.4.3 TCP/IP概述
  • 2.4.4 IP协议
  • 2.5 传输层
  • 2.5.1 数据自动分包
  • 2.5.2 端到端的传输
  • 2.5.3 数据的可靠传输
  • 2.6 应用层
  • 2.6.1 ping
  • 2.6.2 telnet
  • 2.6.3 OSPF
  • 2.6.4 DNS
  • 2.6.5 HTTP协议
  • 2.7 基于消息协议的公告牌
  • 2.7.1 需求描述
  • 2.7.2 制定协议
  • 2.8 分布式通信举例——MapReduce
  • 2.9 本章小结
  • 第3章 通信系统高层抽象
  • 3.1 RPC介绍
  • 3.2 RESTful
  • 3.2.1 资源和表现层
  • 3.2.2 状态转移
  • 3.2.3 RESTful总结
  • 3.3 消息队列
  • 3.4 序列化
  • 3.5 使用Thrift实现公告牌服务
  • 3.5.1 Apache Thrift介绍
  • 3.5.2 安装Apache Thrift
  • 3.5.3 编写Thrift文件
  • 3.5.4 实现服务器
  • 3.5.5 实现客户端
  • 3.6 本章小结
  • 第4章 走进C++高性能编程
  • 4.1 基于C++的留言板系统
  • 4.1.1 基于Socket的通信
  • 4.1.2 C++中的内存与资源管理
  • 4.2 来自服务器的天书
  • 4.2.1 编码
  • 4.2.2 C++98的编码缺陷
  • 4.2.3 C++11编码支持
  • 4.3 繁忙的服务器
  • 4.3.1 分身乏术
  • 4.3.2 fork——分身术
  • 4.3.3 进程间通信
  • 4.3.4 轻量级分身——线程
  • 4.3.5 C++11线程
  • 4.3.6 竞争问题与解决方案
  • 4.3.7 多线程优化
  • 4.3.8 异步I/O
  • 4.4 消失不见的内存
  • 4.4.1 内存分配与内存碎片
  • 4.4.2 tcmalloc
  • 4.4.3 内存池
  • 4.5 本章小结
  • 第5章 分布式实时处理系统
  • 5.1 Hadoop与MapReduce
  • 5.1.1 HDFS
  • 5.1.2 MapReduce模型
  • 5.2 Storm实时处理系统
  • 5.2.1 历史
  • 5.2.2 计算模型
  • 5.2.3 总体架构
  • 5.2.4 Storm元数据
  • 5.2.5 Storm与Hadoop比较
  • 5.3 有保证的消息处理
  • 5.3.1 完全处理与元组树
  • 5.3.2 元组的唯一标识
  • 5.3.3 确认和失败
  • 5.3.4 高效实现
  • 5.4 本章小结
  • 第6章 实时处理系统编程接口设计
  • 6.1 总体架构设计
  • 6.1.1 Hurricane与Storm比较
  • 6.1.2 总体架构
  • 6.1.3 任务接口
  • 6.2 消息源接口设计
  • 6.3 消息处理器接口设计
  • 6.4 数据收集器设计
  • 6.5 元组接口设计
  • 6.6 序列化接口设计
  • 6.7 本章小结
  • 第7章 服务组件设计与实现
  • 7.1 Executor设计与实现
  • 7.1.1 事件驱动的消息队列
  • 7.1.2 动态装载技术
  • 7.1.3 Executor实现
  • 7.2 Task设计与实现
  • 7.3 本章小结
  • 第8章 管理服务设计与实现
  • 8.1 President功能与设计
  • 8.2 President实现
  • 8.2.1 简单的网络通信实现
  • 8.2.2 Topology装载实现
  • 8.2.3 Manager管理调度实现
  • 8.2.4 序列化实现
  • 8.3 本章小结
  • 第9章 实时处理系统编程接口实现
  • 9.1 消息源接口实现
  • 9.1.1 消息源执行器
  • 9.1.2 WordCount实现实例
  • 9.2 消息处理单元接口实现
  • 9.2.1 消息处理单元执行器
  • 9.2.2 事件处理
  • 9.2.3 WordCount实现实例
  • 9.3 数据收集器实现
  • 9.3.1 分发策略
  • 9.3.2 传输层实现
  • 9.4 本章小结
  • 第10章 可靠消息处理
  • 10.1 基本概念
  • 10.1.1 完全处理
  • 10.1.2 失败与重发
  • 10.2 接口设计
  • 10.3 具体实现
  • 10.3.1 简单实现
  • 10.3.2 高效实现
  • 10.4 本章小结
  • 第11章 通信系统设计与实现
  • 11.1 I/O多路复用方案解析
  • 11.1.1 基本网络编程接口
  • 11.1.2 非阻塞的服务器程序
  • 11.1.3 使用select()接口的基于事件驱动的服务器模型
  • 11.1.4 使用epoll实现异步事件通知模型
  • 11.2 基础工具
  • 11.2.1 线程工具
  • 11.2.2 日志工具
  • 11.3 传输层实现
  • 11.3.1 Reactor模式
  • 11.3.2 定义抽象TP传输层
  • 11.3.3 实现基于epoll的TP传输层
  • 11.3.4 实现基于IOCP的TP传输层
  • 11.4 应用层HTTP实现
  • 11.4.1 HttpContext
  • 11.4.2 HttpRequest
  • 11.4.3 HttpResponse
  • 11.4.4 HttpConnection
  • 11.4.5 HttpServer
  • 11.4.6 总结
  • 11.5 跨平台分割编译
  • 11.5.1 Makefile
  • 11.5.2 Kake
  • 11.6 与实时处理系统集成
  • 11.6.1 修改NetListener
  • 11.6.2 修改NetConnector
  • 11.7 本章小结
  • 第12章 事务性Topology实现
  • 12.1 Exact-once语义解决方案
  • 12.2 设计细节
  • 12.2.1 构造事务性Topology
  • 12.2.2 消息处理单元
  • 12.3 事务性Topology API
  • 12.3.1 消息处理单元
  • 12.3.2 事务性消息源
  • 12.4 本章小结
  • 第13章 多语言接口
  • 13.1 C语言通用接口
  • 13.1.1 元组接口
  • 13.1.2 消息源接口
  • 13.1.3 消息处理单元接口
  • 13.1.4 计算拓扑接口
  • 13.2 Python接口
  • 13.2.1 ctypes
  • 13.2.2 元组接口
  • 13.2.3 消息源接口
  • 13.2.4 消息处理单元接口
  • 13.2.5 计算拓扑接口
  • 13.2.6 应用示例
  • 13.3 JavaScript接口
  • 13.3.1 V8引擎
  • 13.3.2 Node.js
  • 13.3.3 V8的互操作接口
  • 13.3.4 任务接口
  • 13.3.5 消息源接口
  • 13.3.6 消息处理单元接口
  • 13.3.7 计算拓扑接口
  • 13.3.8 应用示例
  • 13.4 Java接口
  • 13.4.1 任务接口
  • 13.4.2 消息源接口
  • 13.4.3 消息处理单元接口
  • 13.4.4 计算拓扑接口
  • 13.4.5 本地代码
  • 13.4.6 应用示例
  • 13.5 Swift接口
  • 13.5.1 应用范围
  • 13.5.2 任务接口
  • 13.5.3 消息源接口
  • 13.5.4 消息处理单元接口
  • 13.5.5 计算拓扑接口
  • 13.6 本章小结
  • 第14章 Squared设计与实现——实现高级抽象元语
  • 14.1 Storm Trident介绍
  • 14.1.1 Squared示例
  • 14.1.2 DRPC示例
  • 14.2 Squared实现
  • 14.2.1 SquaredTopology和Spout
  • 14.2.2 SquaredBolt
  • 14.2.3 Stream
  • 14.2.4 状态存储
  • 14.2.5 DRPC实现
  • 14.2.6 操作与处理节点
  • 14.2.7 流操作
  • 14.3 本章小结
  • 第15章 实战:日志流处理
  • 15.1 日志流处理设计方案
  • 15.2 实现Topology
  • 15.2.1 编写消息源
  • 15.2.2 编写索引消息处理单元
  • 15.2.3 编写统计消息处理单元
  • 15.3 本章小结
  • 第16章 实战:频繁组合查找
  • 16.1 背景介绍
  • 16.1.1 数据挖掘概念
  • 16.1.2 关联规则和频繁项集
  • 16.1.3 啤酒与尿布
  • 16.2 频繁二项集挖掘方法
  • 16.2.1 频繁二项集
  • 16.2.2 算法设计思路
  • 16.2.3 Hurricane实现思路
  • 16.3 编写Spout
  • 16.4 编写Bolt
  • 16.4.1 SplitBolt
  • 16.4.2 PairCountBolt
  • 16.4.3 PairTotalCountBolt
  • 16.4.4 ConfidenceComputeBolt
  • 16.4.5 SupportComputeBolt
  • 16.4.6 FilterBolt
  • 16.5 编写Topology
  • 16.6 本章小结
  • 第17章 实战:在AWS和阿里云上部署Hurricane实时处理系统
  • 17.1 AWS部署
  • 17.1.1 搭建虚拟私有云
  • 17.1.2 配置安全组
  • 17.1.3 加载EC2实例
  • 17.1.4 弹性IP地址管理
  • 17.2 阿里云部署
  • 17.2.1 创建虚拟私有云
  • 17.2.2 管理安全组
  • 17.2.3 创建ECS
  • 17.2.4 SSH登录
  • 17.3 Hurricane分布式部署与管理
  • 17.3.1 分布式部署原理
  • 17.3.2 分布式安装配置
  • 17.3.3 分布式启动
  • 17.4 部署分布式实时处理系统
  • 17.5 未来之路
  • 17.6 本章小结
展开全部