redis和zk实现分布式锁的优缺点
Redis實(shí)現(xiàn)
優(yōu)點(diǎn):性能好
缺點(diǎn):
對(duì)某個(gè) redismaster 實(shí)例,寫入了 myLock 這種鎖 key 的 value,此時(shí)會(huì)異步復(fù)制給對(duì)應(yīng)的 masterslave 實(shí)例。
但是這個(gè)過程中一旦發(fā)生 redismaster 宕機(jī),主備切換,redisslave 變?yōu)榱?redismaster。
接著就會(huì)導(dǎo)致,客戶端 2 來嘗試加鎖的時(shí)候,在新的 redismaster 上完成了加鎖,而客戶端 1 也以為自己成功加了鎖。
此時(shí)就會(huì)導(dǎo)致多個(gè)客戶端對(duì)一個(gè)分布式鎖完成了加鎖。
這時(shí)系統(tǒng)在業(yè)務(wù)語義上一定會(huì)出現(xiàn)問題,導(dǎo)致各種臟數(shù)據(jù)的產(chǎn)生。
所以這個(gè)就是 rediscluster,或者是 redismaster-slave 架構(gòu)的主從異步復(fù)制導(dǎo)致的 redis 分布式鎖的最大缺陷:在 redismaster 實(shí)例宕機(jī)的時(shí)候,可能導(dǎo)致多個(gè)客戶端同時(shí)完成加鎖。
ZK實(shí)現(xiàn)
優(yōu)點(diǎn):高可靠 zk本身通過leader+quorum機(jī)制保障高可靠。
缺點(diǎn):ZooKeeper實(shí)現(xiàn)的分布式鎖,性能并不太高。為啥呢?
因?yàn)槊看卧趧?chuàng)建鎖和釋放鎖的過程中,都要?jiǎng)討B(tài)創(chuàng)建、銷毀瞬時(shí)節(jié)點(diǎn)來實(shí)現(xiàn)鎖功能。大家知道,ZK中創(chuàng)建和刪除節(jié)點(diǎn)只能通過Leader服務(wù)器來執(zhí)行,然后Leader服務(wù)器還需要將數(shù)據(jù)同步到所有的Follower機(jī)器上,這樣頻繁的網(wǎng)絡(luò)通信,性能的短板是非常突出的。
?
總結(jié)
以上是生活随笔為你收集整理的redis和zk实现分布式锁的优缺点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多目标应用:基于MOGWO的地铁隧道上方
- 下一篇: nats streaming订阅