分布式锁redlock 之 看大佬们吹牛皮
看大佬們吹牛皮都有意思🐶
antirez: “快來(lái)看我搞的redlock,感覺還不錯(cuò)哦。”
https://redis.io/topics/distlock
Martin: “你這個(gè)redlock不行啊。”
http://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html
antirez: “來(lái),我來(lái)給你說(shuō)一下為什么行。”
http://antirez.com/news/101
讀后感
redlock的兩個(gè)問(wèn)題
基于local time來(lái)判斷鎖的過(guò)期時(shí)間,local time因?yàn)槠渌虮恍薷?#xff0c; 將不能保證鎖的嚴(yán)格的正確性 (人為修改,與時(shí)間服務(wù)器同步時(shí)間等)
獲取到鎖的實(shí)例,在鎖有效期期內(nèi)沒干完活,超過(guò)有效期后,另一個(gè)實(shí)例可獲得同一個(gè)鎖。造成同一個(gè)鎖被多個(gè)實(shí)例持有。
可以通過(guò)不設(shè)置過(guò)期時(shí)間來(lái)解決這個(gè)問(wèn)題,但是不設(shè)置過(guò)期時(shí)間又會(huì)造成死鎖無(wú)法自動(dòng)解決。
當(dāng)然這個(gè)不是redlock特有的問(wèn)題。但凡帶過(guò)期時(shí)間的鎖,應(yīng)該都有這個(gè)問(wèn)題。
antirez 與 Martin 爭(zhēng)論的點(diǎn):
redlock的定位比較尷尬。
(官方舉例是5個(gè)),增加了使用門檻。
個(gè)人認(rèn)為 setnx or redlock
適合的使用場(chǎng)景
- 大部分的日常的業(yè)務(wù),追求低成本,簡(jiǎn)單易用,99%的情況下能正確使用就行,偶爾的錯(cuò)誤對(duì)業(yè)務(wù)產(chǎn)生的影響不大。
不適合的場(chǎng)景
- 對(duì)于錯(cuò)誤0容忍的場(chǎng)景,出一點(diǎn)點(diǎn)錯(cuò)誤就會(huì)翻車出人命的那種。比如發(fā)火箭,自動(dòng)駕駛,金錢交易。😂
redis作為緩存使用還是很優(yōu)秀的。
只不過(guò)可能覺得 搞個(gè)分布式鎖似乎是舉手之勞,還沒想到這么好用,但確實(shí)沒有嚴(yán)格的正確性保證。
總結(jié)
以上是生活随笔為你收集整理的分布式锁redlock 之 看大佬们吹牛皮的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 抖音测试距离的软件,抖音测量长度的软件如
- 下一篇: 项目管理十大管理过程和知识领域思维导图(