【分享说明】:
我会花很多时间或浅或深的研读一本书,然后总结一些提炼出来的精华,用简短的语言,让其他人能够用很少的时间大致知道这本书能带给自己的价值,如果适用自己,鼓励买一本正本实体书细读和收藏。
通篇会以原文目录为结构,给出提炼内容,如果不重要或者一看目录就懂的,会保留目录,有不明白的,以原文学习为参照。
所有分享内容,为了区分,会以》开头,可能有多行缩进,或差异化颜色表示。
【书名】:《大规模分布式系统架构与设计实战》
【作者】:彭渊,淘宝Fourinone创始人,在淘宝做了大量的项目,项目经验挺丰富,现在华人做中间件首席架构师。
【发行】:2014年
【适用】:本书其实是围绕着Fourinone在讲分布式,并非分布式理论,所以只适用于想研究Fourinone的人,应用实践挺详细。Fourinone是为了解决Hadoop的不足,所以也会有很多相似之处,想研究hadoop的可以借鉴一下思路。最后一单在调度这块比较详细,适用于研究分布式调度的人阅读。
【总结】:
1、作者想借Fourinone的讲解,来讲分布式,但全文明显一种偏向Fourinone,拉回,再偏的感觉。如果单纯的定性为Fourinone讲解,会更合适吧。
2、针对Fourinone的适应场景和怎么讲,讲的很详细,给出了足够的实践代码。
3、在框架设计层面,也给出了很多讲解,尤其是最后的作业调度实现上,很到位。
4、Fourinone看起来是个全面轻量的分布式框架包,这个值得研究一下。
5、如果不是针对Fourinone,本书价值中庸,作者本身做为工程经验为主的人员,理论应该是短板。
【章节总结】
第1章介绍了Fourinone的诞生背景,其实就是为了解决Hadoop的臃肿。
第2章介绍了Fourinone的思路,主要是包工头(分活)和工人(干活)的组织协调,并且详细举例介绍了分布式实践。
3-4章介绍了Fourinone能做什么,一章一块:集群管理、分布式缓存、消息队列、分布式文件系统、作业调度。
【正式分享】
前 言
第1章概述
1.1分布式计算、并行计算、云计算概述
1.2分布式产品Hadoop、ZooKeeper、HBase概述
1.3Fourinone的产生背景
》HadoopMap/Reduce框架不足
不支持依赖解决:http拆分多行处理有上下依赖
复杂中间计算套用MR困难
MR实现复杂,API难懂
固化逻辑思维,业务逻辑不连贯
单机显示不出并行优势
难以直观设计每台机器做什么
欠缺windows平台支持
》目标:轻量、高效、支持复杂业务的框架:Fourinone
第2章分布式并行计算的原理与实践
》这篇以分布式为名头,介绍了Fourinone,应该所以标题改为Fourinone更合适
2.1分布式并行计算模式
2.1.1最初想到的master-slave结构
》普通的主从结构
2.1.2“包工头-职介所-手工仓库-工人”模式
》包工头:负责一个业务,调度
》职介所:管理一台机器的计算资源
》工人:计算节点
》手工仓库:输入输出DB
2.1.3基于消息中枢的计算模式
》处理节点监听队列任务
》发布节点向队列发布任务
2.1.4基于网状直接交互的计算模式
》类似P2P
2.1.5并行结合串行模式
》类似工厂的生产线和组装线,独立并行加工,统一串行组装
2.1.6包工头内部批量多阶段处理模式
》等最慢的完成了再统一返回,包工头之间串行处理
2.1.7计算集群模式和兼容遗留计算系统
》原有业务可能需要实现上面的包工头串行变并行,需要引入总包工,但这会使系统变臃肿。通过合理的组合工人和包工头可以解决问题的。
2.1.8工人计算的服务化模式
》Fourinone可以把工人配置成服务,默认是false
2.2跟Hadoop的区别
2.3关于分布式的一些概念与产品
》离线计算:MR和spark都是
》实时计算:storm流式处理
》迭代计算:storm的拓扑计算
2.4配置文件和核心API介绍
》介绍Fourinone的配置
2.5实践与应用
2.5.1一个简单的示例
2.5.2工头工人计算模式更完整的示例
2.5.3工人合并互相say hello的示例
2.5.4 实现Hadoop经典实例Word Count
2.5.5分布式多机部署的示例
2.5.6分布式计算自动部署的示例
2.5.7计算过程中的故障和容灾处理
2.5.8计算过程中的相关时间属性设置
2.5.9如何在一台计算机上一次性启动多个进程
2.5.10如何调用C/C++程序实现
2.5.11如何中止工人计算和超时中止
2.5.12使用并行计算大幅提升递归算法效率
2.5.13使用并行计算求圆周率π
2.5.14从赌钱游戏看PageRank算法
2.5.15使用并行计算实现上亿排序
2.5.16工人服务化模式应用示例
2.6实时流计算
第3章分布式协调的实现
》简单看了一下,是leader思路,所有节点有一个是主节点,不同于其他节点。和其他框架的区别主要在于确定leader算法不同。这篇里讲了很多细节化的,有时间可以再研读一下。
3.1协调架构原理简介
3.2核心API
3.3权限机制
3.4相对于ZooKeeper的区别
3.5与Paxos算法的区别
3.6实践与应用
3.6.1如何实现公共配置管理
3.6.2如何实现分布式锁
3.6.3如何实现集群管理
3.6.4多节点权限操作示例
3.6.5领导者选举相关属性设置
第4章分布式缓存的实现
4.1小型网站或企业应用的缓存实现架构
》主节点可以实现做缓存,压力大之后,上层加负载均衡,下面多个主节点缓存
4.2大型分布式缓存系统实现过程
4.3一致性哈希算法的原理、改进和实现
》解决一致性均衡,节点复制多份于环中
4.4解决任意扩容的问题
》key包含日期信息,节点含有加入日期,key只处理比自己日期早加入的节点,相当于每个key维护了各自的认为的节点大小规模
4.5解决扩容后数据均匀的问题
》配置分组,让新数据去新机器
》冲突问题:天为粒度的已经足够了,集群一般很少频繁更新
4.6分布式Session的架构设计和实现
》原理由缓存一样,sessionid带有日期信息,根据日期计算规模,取模
4.7缓存容量的相关属性设置
4.8缓存清空的相关属性设置
第5章消息队列的实现
5.1闲话中间件与MQ
5.2JMS的两种经典模式
》点对点的队列模式
》发布/订阅模式,广播
5.3如何实现发送接收的队列模式
5.4如何实现主题订阅模式
第6章分布式文件系统的实现
6.1FTTP架构原理解析
6.2搭建配置FttpAdapter环境
6.3访问集群文件根目录
6.4访问和操作远程文件
6.5集群内文件复制和并行复制
6.6读写远程文件
6.7解析远程文件
6.8并行读写远程文件
6.9批量并行读写远程文件和事务补偿处理
6.10如何进行整型读写
6.11基于整型读写的上亿排序
第7章分布式作业调度平台的实现
7.1调度平台的设计与实现
》大致组件
任务包:表示一个任务,包括程序、配置、参数、限制(最多占多少内存、最长运行时间)等
任务队列,元素是任务包
监控管理:在队列之上做的监控和展示
资源池:资源清单管理
任务调度器:持续运行,扫描队列和资源分派任务、检测超时。获取的资源可能是多台机器的。
分布式锁:任务调度器主备互锁
任务执行器:根据机器硬件资源,注册资源池
7.2资源隔离的实现
》限制:有个容器,虚拟化
》控制:监控检测异常之后,控制住进程
7.3资源调度算法
》先来后到
》最少占用资源优先
》按容量调度:最大化利用资源
7.4其他作业调度平台简介
7.4.1其他MPI作业资源调度技术
7.4.2Mesos和Yarn简介