高性能分布式鎖

? ? 在高并發(fā)請(qǐng)求的系統(tǒng)中章办,我們知道要控制多個(gè)線程對(duì)資源的并發(fā)訪問锉走,大都會(huì)用synchronize或者lock鎖來實(shí)現(xiàn)同步,但是在分布式應(yīng)用系統(tǒng)中纲菌,要控制一個(gè)事務(wù)的并發(fā)執(zhí)行,需要跨JVM控制并發(fā)疮绷,那就需要用到分布式鎖翰舌。

? ? 分布式鎖的實(shí)現(xiàn)有很多方法,通常情況下只要是各個(gè)分布式應(yīng)用能共同訪問的資源我們都可以用來作分布式鎖冬骚,區(qū)別只是性能椅贱,安全性,可用性等的考慮了只冻,比如數(shù)據(jù)庫(kù)庇麦,緩存服務(wù)以及業(yè)內(nèi)推崇的zookeeper等。

數(shù)據(jù)庫(kù)實(shí)現(xiàn)分布式鎖思路:利用數(shù)據(jù)庫(kù)唯一索引喜德,悲觀鎖等特性山橄。

1,先select沒有數(shù)據(jù)就插入數(shù)據(jù)舍悯,誰(shuí)插入成功誰(shuí)就獲得鎖航棱,通過delete數(shù)據(jù)進(jìn)行釋放鎖,對(duì)于請(qǐng)求量大情況下數(shù)據(jù)庫(kù)性能是瓶頸萌衬。

2饮醇,鎖等待,如果線程未獲得鎖秕豫,則一般需要進(jìn)行重試或者等待鎖釋放朴艰。這種需求則需要推翻1這種釋放鎖的方式,通過for update加鎖混移,commit釋放鎖可以解決此問題祠墅。但隨之而而來的問題是獨(dú)占鎖持有時(shí)間長(zhǎng)的話,占用數(shù)據(jù)庫(kù)連接會(huì)造成連接池占滿的問題歌径。

通過緩存服務(wù)實(shí)現(xiàn)分布式鎖:memcached的add方法饵隙,redis的setnx方法都是原子操作,memcached的問題是內(nèi)存不夠或者宕機(jī)會(huì)丟失數(shù)據(jù)沮脖。redis可以持久化以及故障恢復(fù)金矛,需要注意設(shè)置失效時(shí)間

基于zookeeper瞬時(shí)有序節(jié)點(diǎn)實(shí)現(xiàn)的分布式鎖芯急,大致思想為:每個(gè)客戶端對(duì)某個(gè)功能加鎖時(shí),在zookeeper上的與該功能對(duì)應(yīng)的指定節(jié)點(diǎn)的目錄下驶俊,生成一個(gè)唯一的瞬時(shí)有序節(jié)點(diǎn)娶耍。判斷是否獲取鎖的方式很簡(jiǎn)單,只需要判斷有序節(jié)點(diǎn)中序號(hào)最小的一個(gè)饼酿。當(dāng)釋放鎖的時(shí)候榕酒,只需將這個(gè)瞬時(shí)節(jié)點(diǎn)刪除即可。同時(shí)故俐,其可以避免服務(wù)宕機(jī)導(dǎo)致的鎖無法釋放想鹰,而產(chǎn)生的死鎖問題。
鎖安全性高药版,zk可持久化辑舷,且能實(shí)時(shí)監(jiān)聽獲取鎖的客戶端狀態(tài)。一旦客戶端宕機(jī)槽片,則瞬時(shí)節(jié)點(diǎn)隨之消失何缓,zk因而能第一時(shí)間釋放鎖。性能開銷比較高还栓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碌廓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子剩盒,更是在濱河造成了極大的恐慌谷婆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辽聊,死亡現(xiàn)場(chǎng)離奇詭異波材,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)身隐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門廷区,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贾铝,你說我怎么就攤上這事隙轻。” “怎么了垢揩?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵玖绿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我叁巨,道長(zhǎng)斑匪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任锋勺,我火速辦了婚禮蚀瘸,結(jié)果婚禮上狡蝶,老公的妹妹穿的比我還像新娘。我一直安慰自己贮勃,他們只是感情好贪惹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寂嘉,像睡著了一般奏瞬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泉孩,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天硼端,我揣著相機(jī)與錄音,去河邊找鬼寓搬。 笑死珍昨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的订咸。 我是一名探鬼主播曼尊,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酬诀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脏嚷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞒御,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤父叙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后肴裙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趾唱,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蜻懦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甜癞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宛乃,死狀恐怖悠咱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情征炼,我是刑警寧澤析既,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站谆奥,受9級(jí)特大地震影響眼坏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酸些,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一宰译、第九天 我趴在偏房一處隱蔽的房頂上張望檐蚜。 院中可真熱鬧,春花似錦囤屹、人聲如沸熬甚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乡括。三九已至,卻和暖如春智厌,著一層夾襖步出監(jiān)牢的瞬間诲泌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工铣鹏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敷扫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓诚卸,卻偏偏與公主長(zhǎng)得像葵第,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子合溺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 高并發(fā)平臺(tái)架構(gòu) 設(shè)計(jì)理念 1. 空間換時(shí)間 多級(jí)緩存卒密,靜態(tài)化前端頁(yè)面緩存(HTTP Header中包含Expire...
    AkaTBS閱讀 3,019評(píng)論 0 13
  • 問題導(dǎo)讀: 1.如何構(gòu)建高并發(fā)電商平臺(tái)架構(gòu) 2.哈希、B樹棠赛、倒排哮奇、bitmap的作用是什么? 3.作為軟件工程師睛约,...
    MaLiang閱讀 5,123評(píng)論 1 70
  • 原文出處: 楊步濤的博客 一鼎俘、 設(shè)計(jì)理念 1. 空間換時(shí)間1) 多級(jí)緩存,靜態(tài)化客戶端頁(yè)面緩存(http head...
    CookieziSui閱讀 2,508評(píng)論 0 48
  • 原來辩涝,故境重游真的會(huì)勾起往事…… 一處芳景贸伐,換了四季,卻圈住了歲月怔揩! 此時(shí)捉邢,眼前那些不熟悉的陌生人,在我眼前演繹著...
    棄明閱讀 146評(píng)論 0 1
  • 所有的故事源于好報(bào)沧踏。 認(rèn)識(shí)好報(bào)很早歌逢,忘記什么原因加的這個(gè)公眾號(hào),那時(shí)候好報(bào)經(jīng)常發(fā)一些自由翘狱,正能量的文章秘案,偶爾會(huì)讓情...
    幕芷閱讀 189評(píng)論 0 1