需要使用分布式锁的场景下,多少人会考虑用 redlock?

2023-09-27 21:46:15 +08:00
 zeonluang

如果使用 redlock 的话,需要多主部署,为了一个分布式锁更改 redis 部署模式或者多部署一个 redis 集群, 多少有点得不偿失的感觉。

提出这个问题肯定会有人拿 redis 和 zk ,etcd 对比。我的本意并非引战,而是想知道 redlock 这个解决方案是否有我没看到的“闪光弹”,在什么场景下非它不可。

ps:我日常开发中,需要用锁时也是 codis“单机锁”一把锁。不考虑啥主从同步失效(笑)

1880 次点击
所在节点    程序员
9 条回复
adskhf
2023-09-27 23:02:31 +08:00
两个条件:

1. 当我已经有一个 redis 集群的时候,我直接复用……
2. 为了性能而不是正确性使用分布式锁时
CC11001100
2023-09-28 00:04:40 +08:00
[如果使用 redlock 的话,需要多主部署,为了一个分布式锁更改 redis 部署模式或者多部署一个 redis 集群, 多少有点得不偿失的感觉。]

是的,我之前也想过这个问题,在降本增效的大环境之下,某些不是特别重要的业务又有分布式锁的需求,到底值不值得引入一个组件来解决?投入产出到底划不划算?还是就干脆随便糊弄糊弄正确性就不管了,就看命玩俄罗斯度盘?

并发又不高又要保证正确又不想有资源浪费,后来我就想妈的干脆把数据库做成分布式锁,于是就有了这个开源项目:
https://github.com/storage-lock

项目还在开发中,常用的数据库基本都支持了,后续将逐步支持在任何能存东西的地方都能当做是一把分布式锁,目前还差文档啥的没补全,欢迎大家 flow/star 跟踪项目进度,提出意见啥的。。。😀
lanlanye
2023-09-28 01:20:49 +08:00
我和 1 楼意见差不多,和 zk 相比的话 redis 好像没什么“非它不可”的情况,考虑正确性的话 zk 更可靠一些。
swulling
2023-09-28 07:04:46 +08:00
1. 如果业务本身不用 redis ,没必要为了分布式锁引入 redlock 。用 zk 或者 etcd 更简单。

2. 哪怕业务已经用了 redis ,用单主 redis 或者 redis cluster 也能做锁,只是依赖 redis 可用性而已。对多数业务来说足够了。没必要用 redlock 。
burymme11
2023-09-28 10:06:45 +08:00
不会使用 redlock ,因为有些情况下,客户端是无法感知到锁被释放了。
分布式锁,各种具体实现不少的,好像没啥情况下是非 redlock 不可的吧。
vincent7245
2023-09-28 10:07:01 +08:00
公司有啥就用啥,比如线上业务已经有部署 zk 集群了,那么分布式锁就用 zk ,除非不满足业务需求再引入其他的技术栈
zeonluang
2023-09-28 10:28:31 +08:00
@adskhf
1 redlock 需要的部署模式和常规的 redis 部署模式不相同,所以可能需要额外部署一套
你说的应该是 redis“单机锁”吧
SoviaPhilo
2023-09-28 14:04:08 +08:00
自从出现过 Redis 锁超时导致的问题以后我现在都只敢用 ZK 锁

redis 还是做好缓存就行了
adskhf
2023-10-07 20:33:31 +08:00
@zeonluang 没太懂,为啥部署模式不太一样?

我用的不是单机锁,就是用于不同实例间同步

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX