这是我参与「第五届青训营」笔记创作活动的第8天。
分布式概论
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。包括分布式计算、分布式存储、分布式数据库等。
-
优势
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
-
挑战
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
分布式故障衡量的四个维度: 正确性、时间、状态、原因 大多数分布式系统不解决拜占庭故障,而是加密数据,让数据尽量不被篡改
分布式理论
- CAP理论在网络发生分区的情况下必须在可用性和一致性间做出选择。近似解决方法:把故障节点的负载转移给备用节点负责。
- ACID理论ACID的一致性是事务一致性,不同于CAP的线性一致性。 原子性强调操作,一致性强调状态。 数据库一定保证A和C,不一定保证I和D
分布式事务
分布式事务采用两阶段提交
两阶段提交:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算算法。
二阶段提交注意的问题:性能问题、协调者单点故障问题、网络分区带来的数据不一致。
三阶段提交:将Prepare阶段拆分成CanCommit和PreCommit。
三阶段提交解决的问题:单点故障问题、阻塞问题。
悲观锁:操作数据使直接把数据锁住,指导操作完成后才会释放锁,上锁期间其他人不能修改数据。
乐观锁:只有冲突时才会放弃操作。
MVCC:并发控制方法,为每个修改保存一个版本和事务的时间戳关联,提高并发性能。