之前我们在《分布式系统之聊聊CAP理论》文中介绍了分布式系统的CAP理论,在实际场景下,一般P是肯定存在的,因此分布式策略一般就是变成了CP和AP选择。那么ACID和BASE理论又是什么呢?
ACID由原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)组成。ACID理论是对事务特性的抽象和总结,一般可用理解为实现了ACID就实现了事务。分布式事务就是对某个操作要么所有节点都成功,要么失败。不允许存在部分成功、部分失败。常用的分布式事务协议有二阶段提交、三阶段提交协议和TCC协议。
二阶段提交协议
为了保证节点的一致性,二阶段协议(也叫2PC)引入了协调者来管理所有节点,并保证这些节点正确提交操作结果,若提交失败则放弃事务。具体分为:投票和提交两个过程。
投票为第一阶段,协调者会向事务的参与者发起执行操作的CanCommit请求并等待参与者响应,参与者收到请求后会执行请求的事务操作,记录日志信息但不提交。参与者执行成功会向协调者发送YES消息,不成功则发送NO消息,终止事务操作。当所有参与者回复了操作结果,则进入提交阶段,在提交阶段,协调者会根据结果发送DoCommit或Abort命令。
如果协调者收到全是YES,则向参与者发送DoCommit消息,参与者完成剩余的提交工作并向协调者回复HaveCommitted消息。
如果协调者收到包含NO的消息,则向所有参与者回复Abort消息。此时参与者会回滚之前的操作,然后向协调者回复HaveCommitted消息。
从上面过程可用看出,二阶段提交中协调者可能存在单点故障问题。此外,假如发生了局部网络异常,可能会造成只有部分节点提交事