分布式事务 --乐观并发控制

2022-10-04  本文已影响0人  wayyyy

两阶段锁限制了系统性能,于是有人想到不用锁实现,即乐观并发控制,乐观并发控制认为:大部分的时候,事务冲突的可能性比较小,事务顺利完成的可能性比失败的可能性要大。因此,乐观并发控制将重点放在事务提交冲突检查上,而不是直接锁住数据不让访问。

乐观并发控制算法有两类:

基于检查的并发控制

基于检查的并发控制,为每个事务涉及的数据创建一个私有副本,所有的更新操作都在私有副本上执行,再通过原来的数据是否有冲突来决定是否能够提交事务。具体流程包含3个阶段:

基于时间戳的并发控制

基于时间戳的并发控制,通过为每一个事务和每个数据项分配时间戳来实现算法。

首先为每个事务都分配一个开始时间戳,例如事务T1的开始时间戳记为TS1,当事务读写某个数据项时,系统会记录最近读取或写入该数据事务的开始时间戳,即每个数据项会记录两个时间戳:

在事务提交的时候同样会进行校验,检查事务中的每个操作是否读取或写入了未来的数据,具体来说,分为下列几个步骤:

基于时间戳的并发控制可以解决常见的并发冲突,事务之间不必相互等待,且不会造成死锁,在单个事务读写数据不多且事务之间涉及的数据基本没有交集的情况下,可以节省大量的额外成本,提升系统的并发性能。

基于时间戳的并发控制在实现上的一大难点是如何保证精准的时间源,因为该算法强依赖于时间戳,如果时间戳不够精准,则可能导致事务的提交顺序不正群。而分布式系统想要实现一个全局的,精准的时间戳非常困难,这又增加了可分布式系统中实现基于时间戳的并发控制难度。


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

上一篇下一篇

猜你喜欢

热点阅读