乐观锁和悲观锁在zookeeper中的应用

本文介绍了悲观锁和乐观锁的概念及其在数据库中的应用。悲观锁具有独占和排他特性,保证数据更新时的一致性,适合高并发场景。乐观锁则在数据读取时不加锁,仅在更新时检查数据是否被其他事务修改,适用于并发较低的情况。在Zookeeper中,通过version版本号实现乐观锁的写入校验机制,防止数据不一致。
摘要由CSDN通过智能技术生成

一、概念介绍

1、悲观锁,又称为悲观并发控制(Pessimistic Concurrency Control,PCC),是数据库中一种非常典型且非常严格的并发控制策略。悲观锁具有强烈的独占和排他特性,能够有效地避免不同事务对同一数据并发更新而造成的数据一致性问题。悲观锁的实现原理中,如果一个事务(假定事务A)正在对数据进行处理,那么在整个处理过程中,都会将数据处于锁定状态,在这期间,其他事务将无法对这个数据进行更新操作,直到事务A完成对该数据的处理,释放了对应的锁之后,其他事务才能够重新竞争来对数据进行更新操作。也就是说,对于一份独立的数据,系统只分配了一把唯一的钥匙,谁获得了这把钥匙,谁就有权利更新这份数据。一般我们认为,在实际生产应用中,悲观锁策略适合解决那些对于数据更新竞争十分激烈的场景,在这类场景中,通常采用简单粗暴的悲观锁机制来解决并发控制的问题。


2、乐观锁,又称为乐观并发控制(Optimistic Concurrency Control,OCC),也是一种常见的并发控制策略。相对于悲观锁而言,乐观锁机制显得更加宽松与友好。悲观锁假定不同事务之间的处理一定会出现互相干扰,从而需要在一个事务从头到尾的过程中都对数据进行加锁处理。而乐观锁则不会对多个进程产生影响。因此在事务处理的绝大部分时间里不需要进行加锁处理。乐观锁机制中,在更新请求提交前,每个事务都会首先检查当前事务读取数据之后,是否会有其他事务对此数据进行了修改。如果其他事务有更新,则正在提交的数据必须要回滚。乐观锁通常适用于使用在数据并发不大,事务冲突较少的应用场景中。

乐观锁有三个阶段,分别是数据读取、写入校验和数据写入,其中写入校验是整个乐观锁控制的关键所在。在写入校验阶段,事务会检查

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值