最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
基于redis的分布式鎖二種應(yīng)用場(chǎng)景-創(chuàng)新互聯(lián)

“分布式鎖”是用來解決分布式應(yīng)用中“并發(fā)沖突”的一種常用手段,實(shí)現(xiàn)方式一般有基于zookeeper及基于redis二種。具體到業(yè)務(wù)場(chǎng)景中,我們要考慮二種情況:

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),九龍坡企業(yè)網(wǎng)站建設(shè),九龍坡品牌網(wǎng)站建設(shè),網(wǎng)站定制,九龍坡網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,九龍坡網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

一、搶不到鎖的請(qǐng)求,允許丟棄(即:忽略)

比如:一些不是很重要的場(chǎng)景,比如“監(jiān)控?cái)?shù)據(jù)持續(xù)上報(bào)”,某一篇文章的“已讀/未讀”標(biāo)識(shí)位更新,對(duì)于同一個(gè)id,如果并發(fā)的請(qǐng)求同時(shí)到達(dá),只要有一個(gè)請(qǐng)求處理成功,就算成功。

用活動(dòng)圖表示如下:

基于redis的分布式鎖二種應(yīng)用場(chǎng)景

二、并發(fā)請(qǐng)求,不論哪一條都必須要處理的場(chǎng)景(即:不允許丟數(shù)據(jù))

比如:一個(gè)訂單,客戶正在前臺(tái)修改地址,管理員在后臺(tái)同時(shí)修改備注。地址和備注字段的修改,都必須正確更新,這二個(gè)請(qǐng)求同時(shí)到達(dá)的話,如果不借助db的事務(wù),很容易造成行鎖競(jìng)爭(zhēng),但用事務(wù)的話,db的性能顯然比不上redis輕量。

解決思路:A,B二個(gè)請(qǐng)求,誰先搶到分布式鎖(假設(shè)A先搶到鎖),誰先處理,搶不到的那個(gè)(即:B),在一旁不停等待重試,重試期間一旦發(fā)現(xiàn)獲取鎖成功,即表示A已經(jīng)處理完,把鎖釋放了。這時(shí)B就可以繼續(xù)處理了。

但有二點(diǎn)要注意:

a、需要設(shè)置等待重試的最長(zhǎng)時(shí)間,否則如果A處理過程中有bug,一直卡死,或者未能正確釋放鎖,B就一直會(huì)等待重試,但是又永遠(yuǎn)拿不到鎖。

b、等待最長(zhǎng)時(shí)間,必須小于鎖的過期時(shí)間。否則,假設(shè)鎖2秒過期自動(dòng)釋放,但是A還沒處理完(即:A的處理時(shí)間大于2秒),這時(shí)鎖會(huì)因?yàn)閞edis key過期“提前”誤釋放,B重試時(shí)拿到鎖,造成A,B同時(shí)處理。(注:可能有同學(xué)會(huì)說,不設(shè)置鎖的過期時(shí)間,不就完了么?理論上講,確實(shí)可以這么做,但是如果業(yè)務(wù)代碼有bug,導(dǎo)致處理完后沒有unlock,或者根本忘記了unlock,分布式鎖就會(huì)一直無法釋放。所以綜合考慮,給分布式鎖加一個(gè)“保底”的過期時(shí)間,讓其始終有機(jī)會(huì)自動(dòng)釋放,更為靠譜)

用活動(dòng)圖表示如下:

基于redis的分布式鎖二種應(yīng)用場(chǎng)景

用2個(gè)線程模擬并發(fā)場(chǎng)景,跑起來后,輸出如下:

基于redis的分布式鎖二種應(yīng)用場(chǎng)景

可以看到T2線程沒搶到鎖,直接拋出了預(yù)期的異常。

把44行的注釋打開,即:換成不允許丟數(shù)據(jù)的模式,再跑一下:

基于redis的分布式鎖二種應(yīng)用場(chǎng)景

可以看到,T1先搶到鎖,然后經(jīng)過2秒的處理后,鎖釋放,這時(shí)T2重試拿到了鎖,繼續(xù)處理,最終釋放。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文標(biāo)題:基于redis的分布式鎖二種應(yīng)用場(chǎng)景-創(chuàng)新互聯(lián)
鏈接URL:http://fisionsoft.com.cn/article/dcphgp.html
Top