CAP定理是分布式系统领域的一个经典定理。分布式系统在设计过程中,以CAP定理作为考虑因素,对于系统的一致性及可用性做出适当权衡。在此前提下,BASE理论应运而生,用于满足分布式系统对于高可用性及扩展性的要求。于此同时,分布式系统的一致性协议也在不断发展,衍生了例如两阶段提交算法(2PC)、三阶段提交协议(3PC)以及Paxos算法。
本文将对以上内容做出介绍。
本文目录
区块链可以理解为一个分布式账本,记录了所有交易数据。共识机制的主要作用就是确保节点上所有节点上账本的数据保持一致,避免因为恶意分区导致的不一致。
一. 前言
计算机系统向网络化和微型化的发展日趋明显,传统的集中式处理模式越来越不能适应人们的需求。很多企业开始放弃原来的大型主机,改用小型机和普通PC服务器来搭建分布式计算机系统。
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
一个标准的分布式系统在没有任何业务逻辑约束的情况下,有如下特征:
- 分布性:多台计算机在空间上随意分布、机器的分布情况随时变动
- 对等性:分布式系统中的计算机没有主从之分(没有控制整个系统的主机、也没有被控制的从机)组成分布式系统的节点都是对等的。
- 并发性:并发性非常常见,如何准确并协调分布式并发操作成为分布式架构与设计的最大挑战之一。
- 缺乏全局时钟:没有一个准确的全局的时空控制来保证顺序。
- 故障总会发生:系统设计时不放过任何异常情况。
二. 从ACID到CAP/BASE
ACID理论此处不再赘述,建议查询了解。
1. CAP理论
分布式系统设计过程中需要考虑CAP理论
CAP理论中指出在一个分布式系统中,不可能同时满足三个条件:
- 一致性 - Consistency :所有节点在同一时间具有相同的数据视图,一次读操作要么返回最新的写操作结果,要么返回一个错误
- 可用性 - Availability:每次请求都能收到非错误的相应,即使请求需要访问的节点有部分是故障的
- 分区容忍性 - Partion Tolerance:系统在遭遇任意数量的信息丢失或者延迟的情况下仍能继续运行
由于分布式系统中分区容忍性必须满足,所以系统需要在一致性和可用性之间权衡。常见策略有CP和AP
2. BASE理论
BASE理论用于满足现代分布式系统对高可用性和可扩展性的需求:
通过基本可用、软状态和最终一致性原则,为分布式系统提供