由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版 深入理解分布式系统 唐伟志 电子工业出版社 9787121428111
¥ ×1
第1章 认识分布式系统
1.1 什么是分布式系统
1.2 为什么需要分布式系统
1.3 分布式系统的示例
1.3.1 搜索引擎
1.3.2 加密货币
1.4 分布式系统的挑战
1.4.1 网络延迟问题
1.4.2 部分失效问题
1.4.3 时钟问题
1.5 每个程序员都应该知道的数字
1.6 本章小结
第2章 分布式系统模型
2.1 两将军问题
2.2 拜占庭将军问题
2.3 系统模型
2.3.1 网络链路模型
2.3.2 节点故障类型
2.3.3 按时间划分系统模型
2.4 消息传递语义
2.5 本章小结
第3章 分布式数据基础
3.1 分区
3.1.1 水平分区算法
3.1.2 分区的挑战
3.2 复制
3.2.1 单主复制
3.2.2 多主复制
3.2.3 无主复制
3.3 CAP定理
3.3.1 PACELC定理
3.3.2 BASE
3.4 一致性模型
3.4.1 线性一致性
3.4.2 实现线性一致性
3.4.3 线性一致性的代价
3.4.4 顺序一致性
3.4.5 因果一致性
3.4.6 最终一致性
3.4.7 以客户端为中心的一致性模型
3.5 隔离级别
3.6 一致性和隔离级别的对比
3.7 本章小结
第4章 分布式共识
4.1 分布式共识简介
4.1.1 什么是分布式共识
4.1.2 为什么要达成共识
4.2 异步系统中的共识
4.2.1 FLP不可能定理
4.2.2 故障屏蔽
4.2.3 使用故障检测器
4.2.4 使用随机性算法
4.3 同步系统中的共识
4.4 Paxos
4.4.1 基本概念
4.4.2 问题描述
4.4.3 Paxos算法实现流程
4.4.4 案例
4.4.5 活锁
4.5 实验:使用Go语言实现Paxos共识算法
4.5.1 定义相关结构体
4.5.2 定义消息结构体
4.5.3 算法实现流程
4.5.4 学习提案
4.5.5 实现单元测试
4.6 Multi-Paxos
4.6.1 确定日志索引
4.6.2 领导者选举
4.6.3 减少请求
4.6.4 副本的完整性
4.6.5 客户端请求
4.6.6 配置变更
4.6.7 完整实现
4.6.8 Paxos练习题
4.7 其他Paxos变体
4.7.1 Disk Paxos
4.7.2 Cheap Paxos
4.7.3 Fast Paxos
4.7.4 Mencius
4.7.5 EPaxos
4.7.6 Flexible Paxos
4.7.7 WPaxos
4.7.8 CASPaxos
4.7.9 其他
4.8 Raft算法
4.8.1 系统模型
4.8.2 基本概念
4.8.3 领导者选举
4.8.4 日志复制
4.8.5 领导者更替
4.8.6 选举限制举例
4.8.7 延迟提交之前任期的日志条目
4.8.8 清理不一致的日志
4.8.9 处理旧领导者
4.8.10 客户端协议
4.8.11 实现线性一致性
4.8.12 配置变更
4.8.13 配置变更存在的Bug
4.8.14 极端情况下的活性问题
4.8.15 日志压缩
4.8.16 基于内存的状态机的快照
4.8.17 基于磁盘的状态机的快照
4.8.18 性能优化
4.8.19 Raft练习题
4.9 Paxos vs Raft
4.10 拜占庭容错和PBFT算法
4.11 本章小结
第5章 分布式事务
5.1 什么是分布式事务
5.2 原子提交
5.2.1 两阶段提交
5.2.2 三阶段提交
5.2.3 Paxos提交算法
5.2.4 基于Quorum的提交协议
5.2.5 Saga事务
5.3 并发控制
5.3.1 两阶段锁
5.3.2 乐观并发控制
5.3.3 多版本并发控制
5.4 Percolator
5.5 本章小结
第6章 时间和事件顺序
6.1 物理时钟
6.2 时钟同步
6.3 逻辑时钟
6.4 向量时钟
6.5 分布式快照
6.6 本章小结
第7章 案例研究
7.1 分布式文件系统
7.1.1 GFS的目标
7.1.2 架构
7.1.3 读取文件
7.1.4 写入文件
7.1.5 一致性模型
7.1.6 其他
7.2 分布式协调服务
7.2.1 ZooKeeper架构
7.2.2 数据模型
7.2.3 ZooKeeper实现
7.2.4 客户端API
7.2.5 其他
7.3 分布式表格存储Bigtable
7.3.1 数据模型
7.3.2 架构
7.3.3 SSTable和LSM Tree
7.3.4 其他优化
7.4 分布式键值存储Dynamo
7.4.1 架构
7.4.2 请求协调
7.4.3 成员管理和故障检测
7.5 分布式NoSQL数据库Cassandra
7.5.1 数据模型
7.5.2 架构
7.5.3 协调请求
7.5.4 一致性级别
7.5.5 轻量级事务
7.5.6 二级索引
7.5.7 批处理
7.6 分布式数据库Spanner
7.6.1 数据模型
7.6.2 架构
7.6.3 TrueTime
7.6.4 读写事务
7.6.5 只读事务
7.6.6 快照读和模式变更事务
7.7 分布式批处理
7.7.1 MapReduce
7.7.2 Spark
7.8 分布式流处理框架Flink
7.8.1 计算模型
7.8.2 系统架构
7.8.3 时间处理
7.8.4 分布式快照
7.8.5 端到端的精确一次语义
7.9 本章小结
唐伟志,曾任网易游戏、腾讯基础架构工程师。毕业后一直从事分布式系统相关工作,在知乎和公众号“多颗糖”上分享对分布式系统论文的解读和算法的讲解。开源爱好者、TiDB Reviewer和Kubernetes Contributor。
解读经典分布式理论、分析重点分布式算法、分享分布式系统案例面向初学者:通过理论和实践结合的方式介绍分布式系统,帮助读者夯实分布式基础知识;面向实践者:实现简单的Paxos共识算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分布式系统案例。
系统讲解分布式原理与应用的书有很多,非常佩服作者挑战该主题的勇气。本书理论与实践相结合,详细讲解了分布式系统中最重要的时间及一致性概念,并佐以常见的分布式应用帮助读者加深对理论的理解,是一本不可多得的分布式入门和拓展视野的好书!
——《Go语言高级编程》作者 曹春晖
在云原生时代,分布式系统随处可见,我们必须掌握它。本书覆盖了从分布式系统模型、分布式数据基础到分布式共识和分布式事务的各个方面,采用通俗易懂、图文并茂的方式讲解,让你了解、掌握分布式系统的方方面面。不想学分布式系统的码农,不是好架构师。 —— Go语言中文网站长 polaris(徐新华)
分布式理论是掌握大规模软件架构必须要了解的知识点。本书不仅介绍了分布式的核心理论,还深入研究了丰富的案例,对比分析了各种真实的项目实现,非常值得读者学习。
—— 高级存储研发奇伢
前 言 21世纪以来,大规模分布式系统、云计算和云原展,在短短20年间成为各大企业信息技术基础架构的核心基石。企业迈向分布式的根本原括:移动互联网时代,各大企业每天都在和巨大的流量和爆炸增长的数据打交道;摩尔定律的失效,使得提升单机能会产生很高的成本,同时网络速度越来越快,意味着并行化程度只增不减;此外,许多应用都要求7×24小时可用,因停电或维护导致的服务不可用,变得越来越让人难以接受;后,经济全球化也导致了企业必须构建分布在多台计算机甚多个地理区域的系统。 相较于单体应用或单机系统,分布式应用或分布式系统具有高能、高可用、容错和可扩展等优点。可见,未来所有的基础架构都会是分布式的。然而分布式系统是一个相当复杂的领域,需要处理各种各样的异常,这些异常不仅难以排查和诊断,而且难以复现,这不是增加测DevOps能解决的,有些异常是不可避免的,需要在软件架构中做取舍。因此,想要构建一个健壮的分布式系统,必须先学基础知识,消化大量信息。尽管学系统好的方式是阅读大量的经典论文,但大部分关于分布式系统的资料,要么艰深太晦涩,要么散落在不计其数的学术论文中,对于初学分布式系统的从业者来说,门槛太高,学习曲线太陡峭;再加上相关知识点比较零散、不成体系,让人觉得云山雾罩、望而却步。本书以易懂的方式,配以大量的图示和代码,帮助读者构建分布式系统相关的知识体系,使读者不再惧怕Paxos或Raft等分布式算法。 笔者从事分布式系统工作多年,虽算不上“老兵”,但笔者对分布式系统的热爱与日俱增。在笔者曾工作过的腾讯事业部,基于共识算法构建了一套强大的分布式基础架构,支撑了十亿级用户数量的App。笔者如今涉足云原生领域,Kuberes等开源分布式系统更是让无数“小厂”有机会抹平与一线企业基础设施的差距,轻松实现高可用、高并发和高可扩展应用。本书内容源自笔者在工作和学习中积累的实际经验,也参考了无数前辈的研究成果。本书可以帮助开发人员设计出精美的分布式系统,理解其他研究者设计的系统和撰写的论文。对于运维人员,如今SRE如火如荼,而Google的《SRE运维解密》提到了大量Google自研的分布式系统,本书可以帮助运维人员更好地理解和实践SRE之,笔者希望通过本书让各个岗位的技术人员都有所收获,无论是自己动手设计系统,还是跟面试官或同事们聊起分布式系统,都能够胸有成竹。 本书写作目的 本书面向对分布式系统感兴趣的技术人员,无论初次接触分布式系统的新手、拥有工作经验的行家,还是分布式系统方面的专业人士,都可以根据自身所需阅读本书各个章节。 目前国内对分布式系统的学习依赖于国外课程和资源,其中的佼佼者如MIT的课程代号为6.824的经典分布式系统课程。然而,国内在分布式系统方面仍缺乏成体系的学习材料,缺乏对Paxos和Raft算法进行深入剖析同含实际代码实战的图书。更糟糕的是,分布式系统领域有的词语被过度复用,再加上翻译的影响,导致许多概念和术语混淆,代表的便是“一致”和“一致算法”,读者可以这两个概念与周围的朋友交流,应该会得到各种不同的答案。 因此,本书的写作目的括: 能解释清楚各种分布式原理、算法和系统“是什么”“为什么”“如何实现”,以及优缺点。同时,本书会穿插介绍许多分布式技术相关的有趣故事。 能够讲清楚算法背景,尝试解决什么问题,如何解决,以及如何优化算法。 能够尽量展示伪代码。笔者信奉“代码胜过千言”,虽然对于分布式系统来说,代码经常会比较复杂,但本书会尽量展示代码或伪代码。 能够对每个原理举例并画图说明,并结合实际案例和经验进行分析。 能够深度剖析各个案例,让读者无惧系统设计。 本书结构 本书内容涵盖常见的分布式系统基础知识括分布式系统定义和基本原则、分布式数据基础、分布式共识算法(以Paxos和Raft为主)、分布式事务、分布式系统中的时间问题及案例分享。 第1章主要介绍什么是分布式系统,为什么需要分布式系统,以及分布式系统带来的挑战,后给出一些设计分布式系统时有用的数字。有基础的读者可以选择阅读。 第2章主要介绍分布式系统模型,本章从两个的思想实验(两将军问题和拜占庭将军问题)开始,然后从网络链路、节点故障和时间三个方面对分布式系统进行分类,可作为读者日常工作中进行系统建模的引子。 第3章主要介绍分布式数据基础。为了满足分布式系统对高能、可用、容错和可扩展的需求,通常底层数据存储系统会对数据进行分散存储,常见的技术有数据分区和数据。然而,这也带来了一致问题:上层应用如何理解分布式数据的不一致?什么样的数据是不一致的?什么是 CAP 定理?更深入地讲,我们该如何区分线一致、强一致、弱一致和终一致等容易混淆的词汇?什么是隔离级别?它和一致又有什么不同?本章尝试厘清分布式系统中这些概念,帮助读者更好地理解和构建一个分布式数据存储系统。 第4章主要介绍分布式共识算法,即Paxos和Raft等算法。共识算法通常作为一个分布式系统的基础库被其他应用调用,各大互联网厂商如Google、Meta、Amazon、腾讯、、百度和字节跳动都实现了自己的Paxos或Raft基础库。但共识算法的难以理解可谓“臭名昭著”,笔者周围许多人都被Paxos晦涩的论文和数不尽的变体“劝退”。虽说Raft更为容易理解,但想要实现一个“工业级”的Raft,仍需许多必不可少的优化,并不像大多数人想象的那么简单。因此,本章毋庸置疑是本书,笔者将带领读者深入浅出地理解共识算法,让读者不再畏惧Paxos和Raft算法。 第5章主要介绍常见的分布式事务实现,主要分为原子提交和并发控制两部分。原子提交算括两阶段提交、三阶段提交、Paxos提交、Saga事务等,并发控括两阶段锁、乐观并发控制和多版本并发控制。后具体分析Google的Percolator——一个结合了两阶段提交和快照隔离的分布式事务解决方案。虽说分布式事务解决方案层出不穷,但基本离不开本书介绍的这几种类型。 第6章主要介绍分布式系统中的时间和事件顺序问题。由于分布式系统没有一个统一的时钟服务,所以诞生了许多单体系统中不存在的时钟问题,本章介绍了物理时钟、时钟同步、逻辑时钟、向量时钟和分布式快照。 第7章介绍了一些经典分布式系统的案例,这些案例的设计精妙且经久不衰,巧妙结合了前几章许多分布式系统的技术,成为人们争相模仿的对象,影响了无数的和开源软件。本章重新审视这些案例,希望给读者带来新的灵感,能够帮助读者解决工作或面试中遇到的难题。 为了照顾初次接触分布式系统的读者,也为了循序渐进地展开主题,本书前从基础概念讲起,有基础的读者可以选择跳过前两章的内容。 表达约定 介于不同的参考资料或不同的上下文语境,在本书中,对以下术语可能有不同的表述方式,例如: 节点:也叫进程、计算机、服务器、组件甚副本。 分片:有时会叫分区或水平分区,本书不考究其概念上的细微差别。 共识(Consensus):国内许多博客会把Paxos或Raft等算法称为“一致”算法,这容易与一致(Consistency)混淆,因此,本书将其统称为共识算法。 源代码与官方参考 相关链接请登录.broadview./42811中的下载资源处获取。 勘误和支持 笔者尽量保证书中的内容严谨,但限于笔者水平,无法保证内容与正确,本书可能出现的错误和不受欢迎的观点都是本人的原因,与笔者引用的参考资料没有任何关系。若读者在阅读过程中发现书中存在失误和不足,或者有任何建议,都可以通过本书源码仓库提交Issue或PR,还可以关注我的公众号“多颗糖”直接与我交流。我会把每一位读者都当作良师益友,你们的批评和意见我都会十分重视与感激,我会在本书后续版本和勘误中及时更新。
面向初学者:通过理论和实践结合的方式介绍分布式系统,帮助读者夯实分布式基础知识; 面向实践者:实现简单的Paxos共识算法,分析HDFS、ZooKeeper、etcd、Kuberes等分布式系统案例。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格