最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了

 更新時間:2021年05月21日 15:07:22   作者:宇的季節(jié)  
Zookeeper的機制可以保證分布式鎖實現(xiàn)業(yè)務(wù)代碼簡單,成本低,Redis如果要解決分布式鎖的問題,對于一些復(fù)雜的情況,很難解決,成本較高,這篇文章重點給大家介紹分布式鎖選擇Zookeeper 而不是Redis的理由,一起看看吧

在分布式的應(yīng)用中,為了防止單點故障,保障高可用,通常會采用主從結(jié)構(gòu),當(dāng)主節(jié)點掛掉后,從節(jié)點可以代替主節(jié)點提供服務(wù)。

Redis通過復(fù)制 + sentinel哨兵來實現(xiàn)主從模式。

Zookeeper通過replicated mode復(fù)制模式來實現(xiàn)主從模式。

單從結(jié)構(gòu)上看,Redis和Zookeeper都是主從架構(gòu),那Zookeeper的優(yōu)勢是什么?為什么要選擇Zookeeper?難道只是因為Zookeeper是目錄結(jié)構(gòu),Redis是K-V結(jié)構(gòu)嗎?

同步機制的不同

Redis

Redis在給從節(jié)點同步數(shù)據(jù)時,正常情況是增量同步,也就是主節(jié)點的數(shù)據(jù)修改語句(DML)會異步的同步給從節(jié)點。Redis的數(shù)據(jù)同步?jīng)]有保障數(shù)據(jù)一致性的機制,也就是說,一條DML在主節(jié)點執(zhí)行成功時,不能保障其他從節(jié)點成功執(zhí)行了這條數(shù)據(jù),這就會造成一個問題,如果在數(shù)據(jù)沒有同步到從節(jié)點時,主節(jié)點掛掉,就會產(chǎn)生數(shù)據(jù)丟失的情況。

Zookeeper

Zookeeper使用類paxos算法來保障數(shù)據(jù)的一致性。簡單的講,當(dāng)一個DML語句發(fā)送給主節(jié)點時,Zookeeper需要保證一半以上的節(jié)點接收到數(shù)據(jù),才會返回成功。并且當(dāng)主節(jié)點掛掉,從節(jié)點重新選舉時,同步到最新的數(shù)據(jù)的節(jié)點會有優(yōu)先選舉權(quán)。

舉個例子:

一個4節(jié)點Zookeeper(A、B、C、D),A是主節(jié)點,當(dāng)執(zhí)行一個create語句成功時,至少有3臺節(jié)點執(zhí)行成功(一半以上),例如A、C、D成功。此時如果A節(jié)點掛了,B、C、D進(jìn)行選舉,由于C、D都執(zhí)行成功了create語句,B沒有執(zhí)行,C、D的數(shù)據(jù)更加新,具有優(yōu)先選舉權(quán),再根據(jù)名稱排序,選擇C做為主節(jié)點。在整個選舉過程中,服務(wù)不可用,選舉完成后,C節(jié)點和A節(jié)點數(shù)據(jù)一致,不會出現(xiàn)丟失的情況。

分布式鎖

要實現(xiàn)分布式鎖,需要滿足一些要求:

  • 只能有一個服務(wù)的一個線程能獲取鎖
  • 一個持有鎖的線程掛掉后,鎖應(yīng)該被釋放,用來給其他線程用
  • 一個持有鎖的線程沒執(zhí)行完,鎖不能釋放
  • 鎖釋放后,其他等待者可以繼續(xù)爭搶
  • 管理鎖的主節(jié)點(Redis或Zookeeper)掛了,重新選舉后,不影響鎖的持有情況

Redis解決方案

問題1、問題2:使用“SET key value EX seconds NX”語句獲取鎖并設(shè)置過期時間

問題3:另開一個監(jiān)控線程,監(jiān)控主線程執(zhí)行情況,用來延長過期時間

問題4:等待線程定時檢查鎖的持有情況

問題5:暫無或者解決成本很高,需要自己實現(xiàn)類paxos的算法

Zookeeper解決方案

通過創(chuàng)建臨時節(jié)點可以解決問題1,2,3

watch機制可以解決問題4,并且相比定時檢查,watch可以做到更高實時性

zookeeper的paxos同步機制保障了節(jié)點間數(shù)據(jù)一致性,即使主節(jié)點掛掉,也可以保障數(shù)據(jù)不丟,可以解決問題5

對比可以發(fā)現(xiàn):

Zookeeper的機制可以保證分布式鎖實現(xiàn)業(yè)務(wù)代碼簡單,成本低。

Redis如果要解決分布式鎖的問題,對于一些復(fù)雜的情況,很難解決,成本較高。

以上就是分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了的詳細(xì)內(nèi)容,更多關(guān)于分布式鎖Zookeeper Redis的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Redis數(shù)據(jù)庫的安裝配置方法

    Redis數(shù)據(jù)庫的安裝配置方法

    redis 是一個高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補償了memcached這類keyvalue存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便
    2014-06-06
  • Redis本地/遠(yuǎn)程(外部)連接失敗問題及解決

    Redis本地/遠(yuǎn)程(外部)連接失敗問題及解決

    這篇文章主要介紹了Redis本地/遠(yuǎn)程(外部)連接失敗問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    這篇文章主要介紹了CentOS 6.5 64位下安裝Redis3.0.2的具體步驟,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 關(guān)于SpringBoot 使用 Redis 分布式鎖解決并發(fā)問題

    關(guān)于SpringBoot 使用 Redis 分布式鎖解決并發(fā)問題

    針對上面問題,一般的解決方案是使用分布式鎖來解決,本文通過場景分析給大家介紹關(guān)于SpringBoot 使用 Redis 分布式鎖解決并發(fā)問題,感興趣的朋友一起看看吧
    2021-11-11
  • 防止redis內(nèi)存溢出優(yōu)化方法

    防止redis內(nèi)存溢出優(yōu)化方法

    本文主要介紹了防止redis內(nèi)存溢出優(yōu)化方法,包括使用maxmemory-policy選項、設(shè)置數(shù)據(jù)過期時間和配置Redis集群等,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Redis哨兵模式介紹

    Redis哨兵模式介紹

    這篇文章介紹了Redis哨兵模式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Redis數(shù)據(jù)持久化方式技術(shù)解析

    Redis數(shù)據(jù)持久化方式技術(shù)解析

    Redis(Remote Dictionary Server ),即遠(yuǎn)程字典服務(wù),是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API
    2021-09-09
  • Redis實現(xiàn)優(yōu)惠券限一單限制詳解

    Redis實現(xiàn)優(yōu)惠券限一單限制詳解

    這篇文章主要介紹了Redis解決優(yōu)惠券秒殺應(yīng)用案例,本文先講了搶購問題,指出其中會出現(xiàn)的多線程問題,提出解決方案采用悲觀鎖和樂觀鎖兩種方式進(jìn)行實現(xiàn),然后發(fā)現(xiàn)在搶購過程中容易出現(xiàn)一人多單現(xiàn)象,需要的朋友可以參考下
    2022-12-12
  • Redis客戶端工具之RedisInsight的下載方式

    Redis客戶端工具之RedisInsight的下載方式

    RedisInsight是Redis官方提供的圖形化客戶端工具,下載步驟包括訪問Redis官網(wǎng)、選擇RedisInsight、下載鏈接、注冊信息、安裝并測試連接
    2025-03-03
  • dubbo服務(wù)使用redis注冊中心的系列異常解決

    dubbo服務(wù)使用redis注冊中心的系列異常解決

    這篇文章主要為大家介紹了dubbo服務(wù)在使用redis注冊中心遇到的一系列異常的解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評論

姚安县| 龙川县| 金山区| 黎川县| 云安县| 曲沃县| 贵定县| 浮梁县| 游戏| 和林格尔县| 黑水县| 易门县| 西盟| 方正县| 和平县| 南平市| 靖西县| 桂林市| 凤台县| 河北区| 噶尔县| 龙州县| 柳江县| 吉安市| 和政县| 邓州市| 民和| 河池市| 开鲁县| 陆川县| 彰武县| 高青县| 平谷区| 宿州市| 永靖县| 安平县| 荣成市| 武汉市| 高州市| 旬邑县| 泽普县|