基于Zookeeper實(shí)現(xiàn)分布式鎖以及源碼的示例分析分析

這篇文章給大家介紹基于Zookeeper實(shí)現(xiàn)分布式鎖以及源碼的示例分析分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供屏邊企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為屏邊眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

關(guān)于redis實(shí)現(xiàn)分布式鎖 分布式環(huán)境下利用Redis實(shí)現(xiàn)分布式鎖,今天我?guī)ьI(lǐng)大家熟悉用zookeeper實(shí)現(xiàn)分布式鎖。

在學(xué)習(xí)分布式鎖之前,讓我們想一想,在什么業(yè)務(wù)場(chǎng)景下會(huì)用到分布式鎖以及設(shè)計(jì)分布式鎖要注意什么?

分布式鎖介紹

1、在什么業(yè)務(wù)場(chǎng)景中會(huì)使用到分布式鎖

當(dāng)多個(gè)客戶端訪問(wèn)服務(wù)器上同一個(gè)資源的時(shí)候,需要保證數(shù)據(jù)的一致性,比如秒殺系統(tǒng),舉個(gè)栗子:

某件商品在系統(tǒng)中的數(shù)量是5件,當(dāng)秒殺時(shí)間到來(lái),會(huì)有大量的用戶搶購(gòu)這件商品,瞬間會(huì)產(chǎn)生非常大的并發(fā)。正常的購(gòu)買流程是:

step1、用戶下單

step2、判斷商品數(shù)量是否足夠

step3、如果足夠,庫(kù)存--

step4、如果庫(kù)存不夠,秒殺失敗。

假設(shè)此時(shí)商品只剩余一件,用戶A對(duì)商品下單,商品數(shù)足夠,下單成功,系統(tǒng)還沒(méi)有來(lái)得及減庫(kù)存,用戶B也對(duì)同一件商品下單,此時(shí)商品數(shù)仍為1,最后導(dǎo)致系統(tǒng)會(huì)庫(kù)存減兩次,導(dǎo)致商品超賣現(xiàn)象。此時(shí)就需要對(duì)用戶下單-->減庫(kù)存的這一步操作進(jìn)行加鎖,使操作成為原子操作。在單機(jī)、單進(jìn)程環(huán)境下,使用JDK的ReentrantLcok或者synchronized完全足夠,但由于秒殺系統(tǒng)并發(fā)量極大,單機(jī)承受不了這樣的壓力極易宕機(jī),此時(shí)就需要多臺(tái)服務(wù)器、多進(jìn)程支撐起這個(gè)業(yè)務(wù),單機(jī)下的ReentrantLcok或者synchronized在此處毫無(wú)用武之地,此時(shí)就需要一把分布式鎖來(lái)保證某個(gè)時(shí)間段只有一個(gè)用戶訪問(wèn)共享資源。

2、分布式鎖的注意事項(xiàng)

a、高效的獲取鎖和釋放鎖

b、在網(wǎng)絡(luò)不穩(wěn)定、中斷、宕機(jī)情況下要自動(dòng)釋放鎖,防止自鎖

c、有阻塞鎖的特性,即使沒(méi)有獲取鎖,也會(huì)阻塞等待

d、具備非阻塞鎖特性,即沒(méi)有獲取到鎖,則直接返回獲取鎖失敗

e、具備可重入行,同一線程可多次獲得鎖

zookeeper實(shí)現(xiàn)分布式鎖

對(duì)于zookeeper,在此就不多介紹,我們可以利用zk的順序臨時(shí)節(jié)點(diǎn)這一特性來(lái)實(shí)現(xiàn)分布式鎖。思路如下:

1、獲取鎖時(shí),在zk的目錄下創(chuàng)建一個(gè)節(jié)點(diǎn),判斷該節(jié)點(diǎn)的需要在其兄弟節(jié)點(diǎn)中是否是最小的,若是最小的,則獲取鎖成功。

2、若不是最小的,則鎖已被占用,需要對(duì)比自己小的節(jié)點(diǎn)注冊(cè)監(jiān)聽(tīng)器,如果鎖釋放,監(jiān)聽(tīng)到釋放鎖事件,判斷此時(shí)節(jié)點(diǎn)在其兄弟節(jié)點(diǎn)是不是最小的,如果是,獲取鎖。

關(guān)于基于Zookeeper實(shí)現(xiàn)分布式鎖以及源碼的示例分析分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:基于Zookeeper實(shí)現(xiàn)分布式鎖以及源碼的示例分析分析
地址分享:http://muchs.cn/article48/gedeep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、Google用戶體驗(yàn)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)