如图:
所谓乐观锁删除,其实就是我们乐观的认为并发的请求数不多从而不上锁的方案 但说是不上锁 其
实也会有一种锁的方式。这种锁的方式就是使用zookeeper节点
的版本号cversion,可以允许你有多个线程并发进来请求一个节点上的数据,但是不允许删除。
如何控制不允许删除?当多个并发线程进行请求获取一个节点上的数据之后,获取到的版本号
cverion的值是一致的,但是当其中一个线程进行set操作进行修改节点对应的值时,此时这个节点
对应的版本号cverion的值就会+1.那么此时其他并发的线程使用版本号进行删除的时候,就会删除
失败。
与之对应的就是悲观锁,悲观锁其实就是悲观的认为并发请求数过大,我们必须进行上锁,这样的
话,只有当获取到锁的线程才可以进行执行请求到资源,其他的
线程必须进行等待。
悲观锁上锁之后,性能降低。乐观锁恰恰的保留的性能。
redis中的乐观锁和悲观锁同理,也是给定一个version版本号