Reids:
- Redis只保證最終一致性季惯,副本間的數(shù)據(jù)復(fù)制是異步進(jìn)行(Set是寫,Get是讀,Reids集群一般是讀寫分離架構(gòu),存在主從同步延遲情況),主從切換之后可能有部分?jǐn)?shù)據(jù)沒有復(fù)制過去可能會(huì) 「丟失鎖」 情況改备,故強(qiáng)一致性要求的業(yè)務(wù)不推薦使用Reids,推薦使用zk蔓倍。
- Redis集群各方法的響應(yīng)時(shí)間均為最低悬钳。隨著并發(fā)量和業(yè)務(wù)數(shù)量的提升其響應(yīng)時(shí)間會(huì)有明顯上升(公網(wǎng)集群影響因素偏大),但是極限qps可以達(dá)到最大且基本無(wú)異常
ZooKeeper:
- 使用ZooKeeper集群偶翅,鎖原理是使用ZooKeeper的臨時(shí)順序節(jié)點(diǎn)默勾,臨時(shí)順序節(jié)點(diǎn)的生命周期在Client與集群的Session結(jié)束時(shí)結(jié)束。因此如果某個(gè)Client節(jié)點(diǎn)存在網(wǎng)絡(luò)問題聚谁,與ZooKeeper集群斷開連接灾测,Session超時(shí)同樣會(huì)導(dǎo)致鎖被錯(cuò)誤的釋放(導(dǎo)致被其他線程錯(cuò)誤地持有),因此ZooKeeper也無(wú)法保證完全一致垦巴。
- ZK具有較好的穩(wěn)定性媳搪;響應(yīng)時(shí)間抖動(dòng)很小,沒有出現(xiàn)異常骤宣。但是隨著并發(fā)量和業(yè)務(wù)數(shù)量的提升其響應(yīng)時(shí)間和qps會(huì)明顯下降秦爆。
總結(jié):
- Zookeeper每次進(jìn)行鎖操作前都要?jiǎng)?chuàng)建若干節(jié)點(diǎn),完成后要釋放節(jié)點(diǎn)憔披,會(huì)浪費(fèi)很多時(shí)間等限;
- 而Redis只是簡(jiǎn)單的數(shù)據(jù)操作,沒有這個(gè)問題芬膝。