- ISBN:9787121428111
- 装帧:80g胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:316
- 出版时间:2022-03-01
- 条形码:9787121428111 ; 978-7-121-42811-1
本书特色
适读人群 :本书适合对分布式感兴趣的读者面向初学者:通过理论和实践结合的方式介绍分布式系统,帮助读者夯实分布式基础知识; 面向实践者:实现简单的Paxos共识算法,分析HDFS、ZooKeeper、etcd、Kubernetes等分布式系统案例。
内容简介
《深入理解分布式系统》主要讲解分布式系统常用的基础知识、算法和案例,经笔者对文献海洋中晦涩艰深的原理和算法进行提炼,辅以图示和代码,并结合实际经验进行分析总结而成。通过阅读本书,读者可以快速、轻松地掌握分布式系统的基本原理,以及Paxos或Raft共识算法,并通过典型的案例学习如何设计大型分布式系统。 《深入理解分布式系统》首先介绍什么是分布式系统、分布式系统带来的挑战,以及如何对分布式系统进行建模,这部分内容偏向概念性介绍。接着介绍了分布式数据的基础知识,包括数据分区技术、数据复制技术、CAP定理、一致性模型和隔离级别,尝试厘清一些十分容易混淆的术语,比如一致性、线性一致性、*终一致性和一致性算法等。本书还介绍了分布式系统的核心算法——Paxos和Raft算法,不仅补充了大量图示进行讲解,还从零实现了一个Paxos算法。此外,本书分析了常见的分布式事务,并讨论了分布式系统中的时间问题,整理了一些实际发生的编程陷阱。*后结合一些对工业界产生重大影响的论文或开源系统,学习前人在设计大型分布式系统时的思路、取舍和创新。
目录
节选
原子提交在分布式领域更普遍地被称为提交问题(The Commit Problem)。 事务的一大好处就是保证了原子性,所有的操作要么都执行,要么都不执行(All Or Nothing)。原子性可以说是事务*重要的特性,软件开发人员依靠事务的原子性,能够安全地将一系列相关的、不可分割的操作组合成一个整体,实现许多业务需求。 但保证原子性并非易事—不仅仅是在分布式系统中,在单机系统中亦如此。原因是原子性涉及了硬件和软件,而两者都可能出现意外故障。即使是向文件中写入一些简单的字节,也需要额外的工作来保证写入的原子性,保证即使硬盘在执行写入操作的时候出现故障,文件也不会被损坏。 我们先简单回顾单机事务的原子性的实现。 常见的机械磁盘一般可以保证512字节的原子写,所谓原子写也就是说,即便遭遇突然断电等意外情况,一般的机械磁盘也可以保证当前512字节的成功写入;如果写入的数据大于512字节,则原子写得不到保障。 为了在更通用的情况下实现原子性,常见方法是使用日志或WAL这类技术。简单地说,先将操作的元数据写入一个单独的日志文件,同时还有表示操作是否完成的标记。倘若系统在写入过程中发生故障,那么基于这些数据,系统恢复后依然能够识别出哪些操作在故障发生前已完成,然后通过撤销所有的操作来回滚事务;或者通过完成剩余未执行的操作来继续提交事务。基于硬盘原子写和日志文件来实现事务原子性的方法,在文件系统和数据库中广泛使用。 但分布式系统中的原子性问题更加复杂,因为节点分布在不可靠的网络中。此外,我们不仅需要确保一个操作在一个节点上的原子性,还要确保一个操作在多个节点上的原子性,也就是说,操作要么在所有的节点上都生效,要么不在任何一个节点上生效,每个节点提交或中止事务的操作要保持一致。 我们还是用银行转账来举例。假设一个分布式系统中的两台服务器,用户A的账户余额存储在服务器N1上,用户B的账户余额存储在服务器N2上,他们的账户上都有100元。 接下来用户A要转账10元给用户B,事务需要同时修改用户A和用户B的数据。假设事务先给服务器N2上用户B的账户加上10元,再给服务器N1上用户A的账户减去10元。由于数据分布在两台完全不同的服务器上,很可能出现一些意想不到的故障,可能在给用户B的账户加上10元后,服务器N1宕机了,无法对用户A扣钱;甚至服务器没有宕机也可能触发异常,例如可能在请求服务器N1的时候发现用户A的账户余额已经不足10元了,不能再对用户A的账户减去10元(数据库约束账户不能为负数)。不管怎样,服务器N1没有完成它在事务中的那部分工作,但服务器N2又完成了它的任务。 分布式事务的原子性通过原子提交协议(Atomic Commit Protocol,ACP)来实现,原子提交协议也叫原子提交算法,原子提交协议必须满足以下三个特性: ?? 协定性(Agreement)。所有进程都决议出同一个值,相当于所有进程要么一起提交事务,要么一起中止事务,不存在两个进程一个提交事务另一个中止事务的情况。 ?? 有效性(Validity)。如果所有进程都决定提交事务并且没有任何故障发生,那么*终整个系统将提交事务;只要有一个进程决定中止事务,系统*终将中止事务。 ?? 终止性(Termination)。终止性又分为弱终止条件(Weak Termination Condition)和强终止条件(Strong Termination Condition)。弱终止条件是指,如果没有任何故障发生,那么所有进程*终都会做出决议(提交或终止事务);强终止条件也称为非阻塞条件(Non-Blocking Condition),是指没有发生故障的进程*终会做出决议。 满足强终止条件的提交算法被称作非阻塞提交算法,而满足弱终止条件但不满足强终止条件的提交算法被称作阻塞提交算法。值得注意的是,协定性约束了两个进程不能决议出不同的值,因此,原子提交协议严格不允许一个出错的进程和一个正确的进程做出不同的决定。如果一个进程出错一段时间后又恢复,则会导致提交算法出现不一致。 其实从这三个特性可以看出,原子提交协议实际上解决了分布式共识问题(见第4章)的一个子类,即对事务的提交或中止达成共识。
作者简介
唐伟志,曾任网易游戏、腾讯基础架构工程师。毕业后一直从事分布式系统相关工作,在知乎和公众号“多颗糖”上分享对分布式系统论文的解读和算法的讲解。开源爱好者、TiDB Reviewer和Kubernetes Contributor。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0 -
PREMIERE PRO 2023全面精通:视频剪辑+颜色调整+转场特效+字幕制作+案例实战
¥69.3¥99.0