新書推薦:
《
金托邦:江湖中的沉重正义
》
售價:HK$
62.1
《
易经今解:释疑·解惑·见微
》
售價:HK$
90.9
《
东欧史(全二册)-“中间地带”的困境
》
售價:HK$
227.7
《
虚拟资本:金融怎样挪用我们的未来
》
售價:HK$
79.4
《
刻意练习不生气
》
售價:HK$
40.3
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:HK$
112.7
《
安全感是内心长出的盔甲
》
售價:HK$
68.8
《
快人一步:系统性能提高之道
》
售價:HK$
113.9
|
編輯推薦: |
多位大数据专家联袂推荐,Autodesk资深系统研发工程师撰写,参透大规模分布式实时处理系统
抽丝剥茧,从概念、原理到分布式实时计算框架实现,兼顾理论与实践,带领读者逐步实现一个高性能、基于C 11的分布式实时处理系统
|
內容簡介: |
全书分为3篇:第一篇详细讲解本书将要开发的分布式实时计算系统所涉及的相关技术,特别针对C++11的新特性着重介绍。第二篇剖析分布式计算系统编程细节,其中对每个重要的概念、模型和函数都加以阐述。第三篇主要关注实战用例,将编写数个极具实践价值的应用程序,为开发者提供参考。通过阅读本书,读者不仅能开发出一套基于CC++实现的分布式实时计算系统,而且还可以以此学习和了解服务器编程接口设计以及UNIX服务器开发的多个重要主题,对未来实际应用与开发提供参考。
|
關於作者: |
卢誉声,Autodesk系统软件研发工程师,从事平台架构方面的研发工作。在此之前,他曾在思科系统(中国)研发中心云产品研发部工作多年,并参与了大
规模分布式系统的服务器后端、前端以及SDK的设计与研发工作,在分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的敏捷实践与开发经
验。他主要从事CC 开发工作,致力于高性能平台架构的研究与开发。此外,对JavaScript、Lua以及移动开发平台等也有一定研究。译有
《Storm实时数据处理》《高级CC 编译技术》《JavaScript编程精解(原书第2版)》。
|
目錄:
|
目录本书赞誉序一序二序三前言第1章 分布式计算概述 11.1 分布式概念 11.2 分布式计算及其原理 21.3 分布式系统特性 31.3.1 容错性 31.3.2 高可扩展性 41.3.3 开放性 51.3.4 并发处理能力 51.3.5 透明性 61.4 通用分布式计算系统 61.4.1 Apache Hadoop 61.4.2 Apache Spark 81.4.3 Apache Storm 91.5 分布式存储系统 101.5.1 分布式存储概念 101.5.2 分布式存储系统特点 121.5.3 分布式存储系统分类 121.5.4 常见分布式存储系统 131.6 本章小结 14第2章 分布式系统通信基础 152.1 时代的浪潮 152.1.1 集中式通信网 162.1.2 去中心化 162.2 可靠的数据链路 172.2.1 数据分组 172.2.2 帧同步 182.2.3 差错控制 182.2.4 链路管理 182.2.5 问题与解决方案 192.3 分层架构 192.4 网络层 222.4.1 寻找路径 222.4.2 网络分层 232.4.3 TCPIP概述 232.4.4 IP协议 242.5 传输层 302.5.1 数据自动分包 302.5.2 端到端的传输 302.5.3 数据的可靠传输 302.6 应用层 352.6.1 ping 352.6.2 telnet 362.6.3 OSPF 362.6.4 DNS 362.6.5 HTTP协议 372.7 基于消息协议的公告牌 382.7.1 需求描述 382.7.2 制定协议 382.8 分布式通信举例——MapReduce 392.9 本章小结 41第3章 通信系统高层抽象 423.1 RPC介绍 423.2 RESTful 443.2.1 资源和表现层 453.2.2 状态转移 453.2.3 RESTful总结 463.3 消息队列 463.4 序列化 493.5 使用Thrift实现公告牌服务 503.5.1 Apache Thrift介绍 513.5.2 安装Apache Thrift 513.5.3 编写Thrift文件 523.5.4 实现服务器 533.5.5 实现客户端 543.6 本章小结 56第4章 走进C++高性能编程 574.1 基于C++的留言板系统 584.1.1 基于Socket的通信 584.1.2 C++中的内存与资源管理 644.2 来自服务器的天书 694.2.1 编码 694.2.2 C++98的编码缺陷 724.2.3 C++11编码支持 734.3 繁忙的服务器 754.3.1 分身乏术 754.3.2 fork——分身术 764.3.3 进程间通信 794.3.4 轻量级分身——线程 854.3.5 C++11线程 864.3.6 竞争问题与解决方案 884.3.7 多线程优化 954.3.8 异步IO 994.4 消失不见的内存 1054.4.1 内存分配与内存碎片 1064.4.2 tcmalloc 1084.4.3 内存池 1104.5 本章小结 112第5章 分布式实时处理系统 1135.1 Hadoop与MapReduce 1135.1.1 HDFS 1145.1.2 MapReduce模型 1155.2 Storm实时处理系统 1295.2.1 历史 1295.2.2 计算模型 1305.2.3 总体架构 1335.2.4 Storm元数据 1335.2.5 Storm与Hadoop比较 1385.3 有保证的消息处理 1395.3.1 完全处理与元组树 1395.3.2 元组的唯一标识 1395.3.3 确认和失败 1415.3.4 高效实现 1435.4 本章小结 144第6章 实时处理系统编程接口设计 1456.1 总体架构设计 1456.1.1 Hurricane与Storm比较 1456.1.2 总体架构 1466.1.3 任务接口 1486.2 消息源接口设计 1496.3 消息处理器接口设计 1506.4 数据收集器设计 1516.5 元组接口设计 1546.6 序列化接口设计 1606.7 本章小结 161第7章 服务组件设计与实现 1627.1 Executor设计与实现 1627.1.1 事件驱动的消息队列 1627.1.2 动态装载技术 1677.1.3 Executor实现 1697.2 Task设计与实现 1717.3 本章小结 172第8章 管理服务设计与实现 1738.1 President功能与设计 1738.2 President实现 1748.2.1 简单的网络通信实现 1758.2.2 Topology装载实现 1828.2.3 Manager管理调度实现 1848.2.4 序列化实现 1938.3 本章小结 198第9章 实时处理系统编程接口实现 1999.1 消息源接口实现 2009.1.1 消息源执行器 2009.1.2 WordCount实现实例 2059.2 消息处理单元接口实现 2079.2.1 消息处理单元执行器 2079.2.2 事件处理 2129.2.3 WordCount实现实例 2159.3 数据收集器实现 2189.3.1 分发策略 2189.3.2 传输层实现 2249.4 本章小结 226第10章 可靠消息处理 22710.1 基本概念 22710.1.1 完全处理 22710.1.2 失败与重发 22910.2 接口设计 22910.3 具体实现 23310.3.1 简单实现 23310.3.2 高效实现 23510.4 本章小结 237第11章 通信系统设计与实现 23811.1 IO多路复用方案解析 23911.1.1 基本网络编程接口 23911.1.2 非阻塞的服务器程序 24111.1.3 使用select接口的基于事件驱动的服务器模型 24211.1.4 使用epoll实现异步事件通知模型 24511.2 基础工具 24911.2.1 线程工具 25011.2.2 日志工具 25411.3 传输层实现 26311.3.1 Reactor模式 26311.3.2 定义抽象TP传输层 26411.3.3 实现基于epoll的TP传输层 26911.3.4 实现基于IOCP的TP传输层 29011.4 应用层HTTP实现 30711.4.1 HttpContext 30711.4.2 HttpRequest 31111.4.3 HttpResponse 31311.4.4 HttpConnection 31511.4.5 HttpServer 31711.4.6 总结 31911.5 跨平台分割编译 32011.5.1 Makefile 32011.5.2 Kake 32311.6 与实时处理系统集成 32511.6.1 修改NetListener 32511.6.2 修改NetConnector 32711.7 本章小结 330第12章 事务性Topology实现 33112.1 Exact-once语义解决方案 33112.2 设计细节 33312.2.1 构造事务性Topology 33312.2.2 消息处理单元 33412.3 事务性Topology API 33712.3.1 消息处理单元 33712.3.2 事务性消息源 33912.4 本章小结 339第13章 多语言接口 34013.1 C语言通用接口 34013.1.1 元组接口 34213.1.2 消息源接口 34613.1.3 消息处理单元接口 34913.1.4 计算拓扑接口 35213.2 Python接口 35413.2.1 ctypes 35413.2.2 元组接口 35613.2.3 消息源接口 35913.2.4 消息处理单元接口 36013.2.5 计算拓扑接口 36113.2.6 应用示例 36413.3 JavaScript接口 36513.3.1 V8引擎 36613.3.2 Node.js 36613.3.3 V8的互操作接口 36713.3.4 任务接口 36813.3.5 消息源接口 36913.3.6 消息处理单元接口 37013.3.7 计算拓扑接口 37113.3.8 应用示例 37313.4 Java接口 37513.4.1 任务接口 37513.4.2 消息源接口 37613.4.3 消息处理单元接口 37713.4.4 计算拓扑接口 37713.4.5 本地代码 38013.4.6 应用示例 38213.5 Swift接口 38413.5.1 应用范围 38513.5.2 任务接口 38513.5.3 消息源接口 38613.5.4 消息处理单元接口 38713.5.5 计算拓扑接口 38813.6 本章小结 390第14章 Squared设计与实现——实现高级抽象元语 39114.1 Storm Trident介绍 39114.1.1 Squared示例 39114.1.2 DRPC示例 39414.2 Squared实现 39614.2.1 SquaredTopology和Spout 39614.2.2 SquaredBolt 40114.2.3 Stream 40514.2.4 状态存储 41014.2.5 DRPC实现 41214.2.6 操作与处理节点 41614.2.7 流操作 41914.3 本章小结 423第15章 实战:日志流处理 42515.1 日志流处理设计方案 42515.2 实现Topology 42715.2.1 编写消息源 42715.2.2 编写索引消息处理单元 42815.2.3 编写统计消息处理单元 42915.3 本章小结 431第16章 实战:频繁组合查找 43216.1 背景介绍 43216.1.1 数据挖掘概念 43216.1.2 关联规则和频繁项集 43316.1.3 啤酒与尿布 43516.2 频繁二项集挖掘方法 43516.2.1 频繁二项集 43516.2.2 算法设计思路 43816.2.3 Hurricane实现思路 43916.3 编写Spout 43916.4 编写Bolt 44116.4.1 SplitBolt 44116.4.2 PairCountBolt 44216.4.3 PairTotalCountBolt 44316.4.4 ConfidenceComputeBolt 44416.4.5 SupportComputeBolt 44516.4.6 FilterBolt 44716.5 编写Topology 44816.6 本章小结 449第17章 实战:在AWS和阿里云上部署Hurricane实时处理系统 45017.1 AWS部署 45017.1.1 搭建虚拟私有云 45217.1.2 配置安全组 45517.1.3 加载EC2实例 45617.1.4 弹性IP地址管理 46117.2 阿里云部署 46417.2.1 创建虚拟私有云 46417.2.2 管理安全组 46717.2.3 创建ECS 46817.2.4 SSH登录 47117.3 Hurricane分布式部署与管理 47117.3.1 分布式部署原理 47217.3.2 分布式安装配置 47217.3.3 分布式启动 47617.4 部署分布式实时处理系统 47717.5 未来之路 47817.6 本章小结 479
|
|