分布式事务

2022-09-19  本文已影响0人  wayyyy

传统的事务要求必须实现 ACID,分别是:

分布式事务也需要遵循 ACID 四个基本属性,实际上,无论是分是不是系统还是单机系统,事务一致性和持久性的实现都没有太大的差别:

为了实现一致性,系统可以在事务的前后引入一些额外的读写操作,以保证数据符合完整性约束。

为了实现持久性,只需在客户端返回响应之前,确保将数据存储在非易失性存储设备即可,通常还会包括一些WAL或者其他日志文件。

可见,就一致性和持久性来说,分布式事务并不需要特殊的实现方式,基本与单机系统类似。
相比之下,原子性和隔离性在分布式系统中的实现就充满了挑战,它俩在分布式系统中的实现分别对应了原子提交和并发控制。

原子提交

在分布式系统中实现分布式事务,需要我们确保一个操作在一个节点的原子性,还要确保一个操作在多个节点的上原子性。比如 保证在所有节点的数据写操作,要么全部都执行,要么全部的都不执行。

这是通过原子提交协议来实现,原子提交协议也叫原子提交算法,原子提交协议必须满足以下3个特性:

从这上面来看,原子提交协议实际上解决了分布式共识问题的一个子类,即对事务的提交或中止达成共识。常见的原子提交协议有:两阶段提交算法,三阶段提交算法,paxos提交算法等。

并发控制

除了原子性,分布式事务还需要实现隔离性。并发控制是一种隔离并发事务以保证数据正确性的机制,对于实现并发控制,分布式事务采取的方案和经典的方案并没有什么太大的差别。不同的并发控制机制用来实现不同的隔离级别,一般来说,可以将并发控制分为以下三类:


参考资料
1、《深入理解分布式系统》

上一篇 下一篇

猜你喜欢

热点阅读