这是我参与「第五届青训营」伴学笔记创作活动的第3天。这节课讲了分布式的概念,分布式的系统模型,分布式的理论基础,分布式事务和共识协议。
什么是分布式?分布式系统是计算机程序的集合。这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。分布式系统主要有3种,分布式计算,分布式存储和分布式数据库。它的优点有去中心化,低成本,弹性布置,资源共享和可靠性高等。缺点是经常的节点故障,依靠网络环境,异构的机器与硬件环境和系统安全性等。
分布式的故障模型是分层的,从外到内的故障分别是,Byzantine failure:节点可以任意篡改发送给其他节点的数据;Authentication detectable byzantine failure(ADB):Byzantine failure的特例,节点可以篡改数据,但不能伪造其他节点的数据;Performance failure:节点未在特定时间段内收到数据,即收到时间太早或太晚;Omission failure:节点收到数据的时间无限晚,即收不到数据;Omission failure:节点收到数据的时间无限晚,即收不到数据;Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设。对于发生外层故障的节点,一般是不立即处理此节点故障,而是将此节点任务分配给其它可用节点。拜占庭问题讲的是节点间的共识和一致性问题。
分布式理论基础主要有CAP理论,ACID理论和BASE理论。CAP中,C指一致性,数据在多个副本之间能够保持一致的特性(严格的一致性);A指可用性,系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据;P指分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。根据定义,CAP中三个要求只能百分之百满足两个。
分布式事务中,讲了为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的演算法,分别是二阶段提交,三阶段提交和MVCC。
共识协议主要讲了Quorum NWR模型,进而具体讲了RAFT协议和介绍了Paxos协议。