分布式的理论基础| 青训营笔记

99 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第14天。

分布式系统建立在相关理论的基础之上,设计分布式系统时需要注意遵循这些原则和理论。这里简要介绍CAP理论、ACID理论和BASE理论。

CAP理论

CAP是Consistence、Availability和Partitioning(这里指Network Partitioning)三个单词的首字母缩写。这三个概念的基本含义是:

  • Consistence:一致性。它指的是数据在多个副本之间能够保持(严格的)一致性的特性
  • Availability:可用性。它是指系统提供的服务必须一直处于可用的状态,即每次请求都能获取到非错的响应(但不保证获取的数据是最新数据)
  • Network Partitioning:网络分区。它指的是分区容错能力,分布式系统在遇到网络中任何分区的故障时,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

CAP理论通常用于数据库领域,但也适用于分布式存储的方向。

在上面的C、A、P三个性质中,有时为了达到某些要求,会追求其中的某一部分而放弃另一部分性质,比如:

  • CA:放弃网络分区容错机制,加强一致性和可用性,典型的例子是传统的单机数据库(因为数据库存储不是分布式的,所以没有网络分区容错的要求)
  • AP:放弃强一致性,追求分区容错性和可用性,这在一些注重用户体验的系统上比较常见,例如文档协作可以容忍不同终端之间的短时间的不一致
  • CP:放弃可用性,追求一致性和分区容错性,例如与金融安全相关的系统(宁可服务短时间中断,也不能出现不一致的数据,例如交易系统的数据如果不一致将带来较大经济损失)

ACID理论

ACID理论是针对数据库事务提出的,约束了数据库事务的特性。事务是数据库管理系统执行过程中的一个逻辑单元,它保证一个事务中的所有操作要么全部执行,要么全部不执行。

ACID是数据库事务的四个特性Atomicity、Consistence、Isolation和Durability的首字母缩写,这些特性的含义分别是:

  • Atomicity:原子性,指的是事务包含的所有操作要么全部成功,要么全部失败,回滚到操作之前的状态
  • Consistency:一致性,指的是事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
  • Isolation:隔离性,指的是当多个用户并发访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰,也就是多个并发事务之间要相互隔离
  • Durability:持久性,指的是一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

BASE理论

BASE理论是对CAP理论中的一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。BASE是对Basically Available、Soft state和Eventually consistent的首字母缩写,其具体含义为:

  • Basically Available:基本可用,是指假设系统出现了不可预知的故障,系统仍然能用,但较正常系统而言存在响应时间或系统功能上的损失
  • Soft state:软状态,这一状态指的是数据中间状态,含义是允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时
  • Eventually consistent:最终一致性,指的是系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值