首页 > 试题广场 >

以下哪个不是分布式锁的实现方式()

[单选题]
以下哪个不是分布式锁的实现方式()
  • 使用数据库乐观锁实现
  • 使用数据库悲观锁实现
  • 使用redis的setnx()、expire()方法,用于分布式锁
  • 基于Zookeeper实现分布式锁
B,使用数据库悲观锁实现不是分布式锁的实现方式,悲观锁通常是在单个数据库实例上使用的,而分布式锁是为了协调不同进程或不同节点之间的资源访问而设计的。分布式锁的实现方式可以使用数据库乐观锁、Redis的setnx()、Zookeeper等技术实现。
发表于 2023-03-02 14:17:30 回复(1)
还是没懂,为啥悲观锁不是分布式锁呢?
发表于 2023-09-12 09:35:16 回复(0)
这题有问题吧,悲观锁才能实现分布式锁吧,每次只能有一个线程获得锁,乐观锁大家都能获得,这搞什么
发表于 2023-02-23 10:34:52 回复(2)
分布式锁如果是指要竞争完才能进入业务代码那就是只能选a,指业务跑结束但是提交不了那乐观锁也算分布式锁,这题就没有答案。
发表于 2023-11-21 10:10:12 回复(0)

(chatgpt给的答案)分布式锁是一种常用的分布式系统并发控制方式,用于在分布式环境下控制多个进程或线程对共享资源的访问。以下是几种常用的分布式锁实现方式:

  1. 基于数据库实现分布式锁:可以利用数据库的事务和行级锁特性,通过对数据库中的特定表或行进行加锁来实现分布式锁。但需要考虑数据库单点故障和性能瓶颈等问题。

  2. 基于缓存实现分布式锁:可以利用分布式缓存系统如Redis的原子性操作,通过SETNX命令实现互斥锁,同时设置锁的超时时间避免死锁。但需要考虑缓存系统的可靠性和性能瓶颈等问题。

  3. 基于Zookeeper实现分布式锁:可以利用Zookeeper的节点临时有序特性,通过创建一个临时有序节点来竞争锁,同时监听前一个节点的删除事件来判断是否获得锁。但需要考虑Zookeeper的单点故障和性能瓶颈等问题。

  4. 基于消息队列实现分布式锁:可以利用消息队列如Kafka的互斥消费特性,通过消费者竞争消息来获得锁,同时设置消息的TTL避免死锁。但需要考虑消息队列的可靠性和性能瓶颈等问题。

以上几种分布式锁实现方式各有优缺点,具体实现方式需要根据实际业务需求和技术选型进行选择。

发表于 2023-03-27 14:45:11 回复(1)
B
发表于 2021-06-21 14:28:05 回复(0)