这是我参与「第五届青训营 」伴学笔记创作活动的第9天。
分布式理论
分布式系统是计算机程序的集合,利用跨多个杜里计算节点的计算资源来实现共同的目标,分为分布式计算,分布式存储,分布式数据库。
分布式优点:去中心化、低成本、弹性、资源共享、可靠性高。
使用者Why:数据爆炸,对存储和计算大规模运用的需求,成本低,构建在廉价服务器上。
分布式存储:GFS、Ceph、Hadoop HDFS、Zookeeper。
分布式数据库:Google Spanner、TiDB、HBase、MongoDB。
分布式计算:Hadoop、Spark、YARN。
故障模型:Byzantine failure、ADB、Performance failure、Omission failure、Crash failure、Fail-stop failure。
故障例子:磁盘故障(Fail-stop failure),磁盘坏道、坏块(Fail-stop failure、ADB),服务器主板、板卡故障(Crash),网络故障(Byzantine failure、Omission failure),软件故障(Byzantine failure)。
两将军问题无解。
分布式事务采用两阶段提交
两阶段提交:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算算法。
二阶段提交注意的问题:性能问题、协调者单点故障问题、网络分区带来的数据不一致。
三阶段提交:将Prepare阶段拆分成CanCommit和PreCommit。
三阶段提交解决的问题:单点故障问题、阻塞问题。
悲观锁:操作数据使直接把数据锁住,指导操作完成后才会释放锁,上锁期间其他人不能修改数据。
乐观锁:只有冲突时才会放弃操作。
MVCC:并发控制方法,为每个修改保存一个版本和事务的时间戳关联,提高并发性能。
时间预言机:采用中心化的授时方式,所有协调者向中心画节点获取时钟。
NWR模型:N(在分布式存储系统中,有多少份备份数据),W(代表一次成功的更新操作至少有w份数据写入成功),R(代表一次成功的读写操作至少有R份数据成功读入)。
RAFT协议:分布式一致性算法,出现部分节点故障,网络延时等情况,不影响各节点,进而提高系统的整体可用性,定义了三种角色,领导者、跟随者、备选者。
日志:节点之间同步信息,以只追加写的方式进行同步,解决了数据被覆盖的问题。
人气号:单调递增,每个任期号内最多只有一个领导者。
Mapper:将输入分解为多个Job来并行处理,彼此之间没有依赖关系。
Shuffler:将maper结果打乱,防止数据倾斜。
Reducer:对map阶段进行处理。