【读书精华分享】《大规模分布式系统架构与设计实战》彭渊著

时间:2023-02-04 19:41:46

【分享说明】:

我会花很多时间或浅或深的研读一本书,然后总结一些提炼出来的精华,用简短的语言,让其他人能够用很少的时间大致知道这本书能带给自己的价值,如果适用自己,鼓励买一本正本实体书细读和收藏。

通篇会以原文目录为结构,给出提炼内容,如果不重要或者一看目录就懂的,会保留目录,有不明白的,以原文学习为参照。

所有分享内容,为了区分,会以》开头,可能有多行缩进,或差异化颜色表示。


【书名】:《大规模分布式系统架构与设计实战》

【作者】:彭渊,淘宝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
分布式产品HadoopZooKeeperHBase概述 
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
关于分布式的一些概念与产品

》离线计算:MRspark都是

》实时计算: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简介