Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式锁的终极悖论:CP锁服务 vs 业务层乐观锁

分布式锁的终极悖论:CP锁服务 vs 业务层乐观锁

提问于 2025-06-25 02:46:11
回答 0关注 6查看 972

当ETCD/ZooKeeper等CP锁服务因网络分区不可用时,是否应该降级到基于DB版本号的乐观锁?如何设计平滑退化机制?

已邀请
等1人回答

回答

成为首答用户。去 写回答
相关文章
乐观锁&悲观锁&自旋锁
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
代码宇宙
2023/02/16
1K0
乐观锁&悲观锁
顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。
Diuut
2022/11/22
4210
悲观锁&乐观锁
最近意外发现之前对悲观锁乐观锁的理解有误,所以重新学习了一下。 1.悲观锁 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 使用场景举例:以MySQL InnoDB为例 商品goods表中有一个字段status
老白
2018/03/19
1.2K0
悲观锁&乐观锁
Java锁、悲观乐观锁、分布式锁?细说那年我们用过的锁
Java锁,指的是应用中使用的锁;应用中在处理线程安全的问题时,常常使用synchronized 或者ReentrantLock等锁来保证线程安全。
品茗IT
2020/05/28
1K0
redis 乐观锁_redis 乐观锁
存储地理位置的数据结构 应用场景 朋友的定位,附近的人,打车距离计算 Geospatial底层使用的是Zset
全栈程序员站长
2022/09/22
4400
MySQL乐观锁(MySQL乐观锁)
悲观锁会把整个对象加锁占为已有后才去做操作,Java中的Synchronized属于悲观锁。悲观锁有一个明显的缺点就是:它不管数据存不存在竞争都加锁,随着并发量增加,且如果锁的时间比较长,其性能开销将会变得很大。
全栈程序员站长
2022/07/31
1.7K0
Java的乐观锁,悲观锁,读写锁,递归锁
我们都知道在 Java 中为了保证一些操作的安全性,就会涉及到使用锁,但是你对 Java 的锁了解的有多少呢?Java 都有哪些锁?以及他们是怎么实现的,今天了不起就来说说关于 Java 的锁。
Java极客技术
2024/01/31
3790
Java的乐观锁,悲观锁,读写锁,递归锁
乐观锁和悲观锁实现(java乐观锁实现)
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。
全栈程序员站长
2022/08/01
1.6K0
乐观锁与悲观锁
乐观锁与悲观锁 http://www.cnblogs.com/qjjazry/p/6581568.html
江湖前辈黄药师
2018/08/27
4580
乐观锁和悲观锁
悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 注:要使用悲观锁,我们必须关闭mysql数据库的自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交。我们可以使用命令设置MySQL为非autocommit模式: set autocommit=0; 设置完autoco
友儿
2022/09/11
2830
乐观锁和悲观锁
乐观锁和悲观锁是数据库并发控制中的两个重要概念。在多用户并发访问数据库时,为了防止数据出现不一致的情况,需要采取锁机制来保证数据的一致性。下面我将分别对乐观锁和悲观锁进行详细的介绍,并比较它们的优缺点。
人不走空
2024/02/20
2600
乐观锁和悲观锁
悲观锁和乐观锁
 在介绍悲观锁和乐观锁之前,让我们看一下锁。锁,在我们生活中随处可见,我们的门上有锁,我们存钱的保险柜上有锁,是用来保护我们财产安全的。程序中也有锁,当多个线程修改共享变量时,我们可以给修改操作上锁(syncronized)。当多个用户修改表中同一数据时,我们可以给该行数据上锁(行锁)。
ha_lydms
2023/08/09
2260
悲观锁和乐观锁
乐观锁与悲观锁
在如今分布式、高并发、各种负载纵横天下的时代,支持高访问量成为检验一个系统合不合格的重要标准,然而我们除了在运算过程中要求系统更加效率外,在最终的数据存储过程中也希望其能够准确。
微观技术
2020/08/20
6950
悲观锁与乐观锁
乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。
葆宁
2019/04/18
8090
悲观锁与乐观锁
cas与乐观锁(jpa乐观锁)
独占锁是一种悲观锁,synchronized就是一种独占锁;它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起直到持有锁的线程释放锁。
全栈程序员站长
2022/07/30
8110
cas与乐观锁(jpa乐观锁)
乐观锁和悲观锁
乐观锁和悲观锁 Q 为什么需要锁(并发控制) A 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,会产生冲突,这就是著名的并发问题 典型的冲突: -- 丢失更新:一个事务的更新覆盖了其它事务的更新结果,这就是所谓的更新丢失。例如:用户A把值从6改成2,用户B把值从2改为6,则用户A丢失了他的更新。 -- 脏读:当一个事务读取其它完成一半食物的记录时,就会发生脏读。例如:用户A、B看到的值都是6,用户B把值改成了2,用户A读到的值仍为6。 为了解决这些并发带来的问题,需要引入并发控制机制 并发控制
王也518
2022/10/26
3780
悲观锁和乐观锁
          前几天有人问了我一个问题,说如果数据库某些操作不用事务,那么又需要保持数据的一致性,那么该用什么方法替代事务。我就想到了悲观锁和乐观锁的思想,下面我解释一下在数据库中的悲观锁和乐观锁
actionzhang
2022/11/30
3600
Optimistic Lock: 乐观锁以及乐观锁的实现
乐观锁( Optimistic Lock ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。
一个会写诗的程序员
2021/03/23
4K1
Optimistic Lock: 乐观锁以及乐观锁的实现
悲观锁、乐观锁,浅析
悲观锁和乐观锁是并发控制常用的两种技术手段。 并发控制是用来确保 多个事务同时读写DB中同一条数据时不破坏事务的隔离性、统一性以及数据库的统一性。
许杨淼淼
2019/12/29
5320
悲观锁与乐观锁
悲观锁,每次访问资源都会加锁,执行完同步代码释放锁,synchronized 和 ReentrantLock 属于悲观锁。
joshua317
2021/09/28
6040

相似问题

什么是分布式锁?

1178

小程序云开发并发 互斥锁 同步锁?

11.3K

使用腾讯云上的redis做分布式锁异常?

01.1K

如何利用golang和redis实现一个分布式的阻塞锁?

0422

2023-06-19:讲一讲Redis分布式锁的实现?

0114
相关问答用户
新浪微博 | 高级总监擅长4个领域
到家集团 | 技术VP擅长5个领域
《用ChatGPT做软件测试》 | 作者擅长5个领域
擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档