分布式理论 | 青训营笔记

106 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第7天。青训营的第八次课程中讲解了有关分布式理论的相关知识。下面是我针对本次课程内容的一些总结笔记。

分布式相关理论

CAP理论

CAP理论是指存储领域内一致性(Consistence)、可用性(Availability)、分区容错性(Network partitioning)要求的总称。

  • 一致性:数据在多个副本间能保持严格的一致性;
  • 可用性:系统提供的服务一直处于可用的状态;
  • 分区容错性:当系统遇到网络分区故障时(脑裂),仍能对外提供一致性和可用性的服务。

值得注意的是,任何一个系统仅能实现严格的CAP三者中的两者,其中:

  • CA:放弃分区容错性,是传统单机数据库的选择;
  • AP:放弃一致性,用于一些注重体验,而不特别关注数据安全的系统,如youtube等视频网站系统;
  • CP:放弃可用性,用于一些需要数据安全的系统,如银行系统。

ACID理论

ACID是传统数据库中事务的四个特性,即原子性、一致性、隔离性和持久性:

  • 原子性:事务所包含的操作要么都成功,要么都失败;
  • 一致性:事务必须从一个一致性的状态到另一个一致性的状态,如银行系统的用户金额总数不变。值得注意的是,这里的一致性和分布式系统中的一致性是不同的;
  • 隔离性:多个用户同时访问数据库时,不同用户的事务不互相干扰;
  • 持久性:当事务被提交时,即使数据库系统遇到故障也不会丢失事务的操作;

BASE理论

Base理论是指对CAP中一致性和可用性权衡的结果,其核心思想是:

  • 基本可用:即当系统出现故障时,不需要持续保证系统的可用性,可以牺牲一定程度上的响应时间或功能;
  • 软状态:允许系统中的数据存在中间状态,即允许系统多个节点的数据副本存在数据延时;
  • 最终一致性:客户端对系统的访问不一定是线性的,但最终都能获取到最新的值;

分布式事务

两阶段提交

两阶段提交是保证分布式系统中,事务跨不同节点进行提交时保持一致性的一种方法,其基本假设为:

  • 引入协调者和参与者,互相进行网络通信
  • 节点采用预写式日志,保证节点的操作不丢失;
  • 所有的节点不会永久损坏,损坏后仍可以恢复。

image.png 其将事务的完成分为了两个阶段:准备阶段和提交阶段。

  • 准备阶段:协调者向参与者发送其需要完成的任务,当参与者完成后,向协调者发送DONE响应;
  • 提交阶段:当协调者无法收到所有参与者的DONE响应时,协调者向所有参与者发送回滚请求;当协调者收到所有参与者的DONE响应时,向所有参与者发送COMMIT信号。当参与者提交成功时,向协调者发送响应,同样的,若协调者无法收到所有参与者的响应,仍需对参与者进行回滚请求。

三阶段提交

image.png

三阶段提交是对于两阶段提交准备阶段的一个改进,其解决了两阶段提交中单点故障和阻塞问题,其基本运行过程如上图所示。

MVCC多版本并发控制

MVCC是一种并发控制的方法,其针对一个数据保存多个不同的版本,使得多个版本的读写操作没有冲突,可以提高并发性能。

其挑战在于版本时间戳的分发,可以通过两种方式解决:

  • 中心化的授予时间戳方式,由一个协调者向节点发送时钟,有点是成本低、算法简单,但会增加一些网络通信的成本;
  • 物理时钟的方法,每个节点都有一个低延迟的始终,以获得一个时间戳的较小范围,SPANNER论文中的方法,优点是效率较高,缺点则是为系统增加了硬件成本。