婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

熱門標(biāo)簽:怎么在地圖標(biāo)注位置生成圖片 電銷卡外呼系統(tǒng)供應(yīng)商 美國(guó)反騷擾電話機(jī)器人 銅陵防封電銷卡 騰訊地圖標(biāo)注提升 福建外呼系統(tǒng)定制化 悟空科技電話機(jī)器人 真人語(yǔ)音電話機(jī)器人 400電話可以免費(fèi)申請(qǐng)嗎

前言

無(wú)論是單機(jī)鎖還是分布式鎖,原理都是基于共享的數(shù)據(jù),判斷當(dāng)前操作的行為。對(duì)于單機(jī)則是共享RAM內(nèi)存,對(duì)于集群則可以借助Redis,ZK,DB等第三方組件來(lái)實(shí)現(xiàn)。Redis,ZK對(duì)分布式鎖提供了很好的支持,基本上開箱即用,然而這些組件本身要高可用,系統(tǒng)也需要強(qiáng)依賴這些組件,額外增加了不少成本。DB對(duì)于系統(tǒng)來(lái)說(shuō)本身就默認(rèn)為高可用組件,針對(duì)一些低頻的業(yè)務(wù)使用DB實(shí)現(xiàn)分布式鎖也是一個(gè)不錯(cuò)的解決方案,比如控制多機(jī)器下定時(shí)任務(wù)的起調(diào),針對(duì)審批回調(diào)處理等,本文將給出DB實(shí)現(xiàn)分布式鎖的一些場(chǎng)景以及解決方案,希望對(duì)你啟發(fā)。

表設(shè)計(jì)

首先要明確DB在系統(tǒng)中仍然需要認(rèn)為是最脆弱的一環(huán),因此在設(shè)計(jì)時(shí)需要考慮壓力問(wèn)題,即能應(yīng)用實(shí)現(xiàn)的邏輯就不要放到DB上實(shí)現(xiàn),也就是盡量少使用DB提供的鎖能力,如果是高并發(fā)業(yè)務(wù)則要避免使用DB鎖,換成Redis等緩存鎖更加有效。如清單1所示,該表中唯一的約束為lock_name,timestamp,version三者組合主鍵,下文會(huì)利用這三者實(shí)現(xiàn)悲觀鎖,樂(lè)觀鎖等業(yè)務(wù)場(chǎng)景。

清單1: 分布式鎖表結(jié)構(gòu)

CREATE TABLE `lock` (
`lock_name` varchar(32) NOT NULL DEFAULT '' COMMENT '鎖名稱',
`resource` bigint(20) NOT NULL COMMENT '業(yè)務(wù)主鍵',
`version` int(5) NOT NULL COMMENT '版本',
`gmt_create` datetime NOT NULL COMMENT '生成時(shí)間',
PRIMARY KEY (`lock_name`,`resource`,`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

悲觀鎖實(shí)現(xiàn)

對(duì)于悲觀鎖業(yè)務(wù)中常見的操作有以下兩種:


針對(duì)A:

A場(chǎng)景當(dāng)一臺(tái)機(jī)器獲取到鎖后,其他機(jī)器處于排隊(duì)狀態(tài),鎖釋放后其他機(jī)器才能夠繼續(xù)下去,這種應(yīng)用層面解決是相當(dāng)麻煩,因此一般使用DB提供的行鎖能力,即select xxx from xxx for update。A場(chǎng)景一般都和業(yè)務(wù)強(qiáng)關(guān)聯(lián),比如庫(kù)存增減,使用業(yè)務(wù)對(duì)象作為行鎖即可。需要注意的是,該方案本質(zhì)上鎖壓力還是在數(shù)據(jù)庫(kù)上,當(dāng)阻塞住的線程過(guò)多,且操作耗時(shí),最后會(huì)出現(xiàn)大量鎖超時(shí)現(xiàn)象。

針對(duì)B:

針對(duì)B場(chǎng)景(tryLock)舉個(gè)具體業(yè)務(wù),在集群下每臺(tái)機(jī)器都有定時(shí)任務(wù),但是業(yè)務(wù)上要求同一時(shí)刻只能有一臺(tái)能正常調(diào)度。
解決思路是利用唯一主鍵約束,插入一條針對(duì)TaskA的記錄,版本則默認(rèn)為1,插入成功的算獲取到鎖,繼續(xù)執(zhí)行業(yè)務(wù)操作。這種方案當(dāng)機(jī)器掛掉就會(huì)出現(xiàn)死鎖,因此還需要有一個(gè)定時(shí)任務(wù),定時(shí)清理已經(jīng)過(guò)期的鎖,清理維度可以根據(jù)lock_name設(shè)置不同時(shí)間清理策略。

定時(shí)任務(wù)清理策略會(huì)額外帶來(lái)復(fù)雜度,假設(shè)機(jī)器A獲取到了鎖,但由于CPU資源緊張,導(dǎo)致處理變慢,此時(shí)鎖被定時(shí)任務(wù)釋放,因此機(jī)器B也會(huì)獲取到鎖,那么此時(shí)就出現(xiàn)同一時(shí)刻兩臺(tái)機(jī)器同時(shí)持有鎖的現(xiàn)象,解決思路:把超時(shí)時(shí)間設(shè)置為遠(yuǎn)大于業(yè)務(wù)處理時(shí)間,或者增加版本機(jī)制改成樂(lè)觀鎖。

insert into lock set lock_name='TaskA' , resource='鎖住的業(yè)務(wù)',version=1,gmt_create=now()
success: 獲取到鎖
failed:放棄操作
釋放鎖

樂(lè)觀鎖實(shí)現(xiàn)

針對(duì)樂(lè)觀鎖場(chǎng)景,舉個(gè)具體業(yè)務(wù),在后臺(tái)系統(tǒng)中經(jīng)常使用大json擴(kuò)展字段存儲(chǔ)業(yè)務(wù)屬性,在涉及部分更新時(shí),需要先查詢出來(lái),合并數(shù)據(jù),寫入到DB,這個(gè)過(guò)程中如果存在并發(fā),則很容易造成數(shù)據(jù)丟失,因此需要使用鎖來(lái)保證數(shù)據(jù)一致性,相應(yīng)操作如下所示,針對(duì)樂(lè)觀鎖,不存在死鎖,因此這里直接存放業(yè)務(wù)id字段,保證每一個(gè)業(yè)務(wù)id有一條對(duì)應(yīng)的記錄,并且不需要對(duì)應(yīng)的定時(shí)器清除。

select * from lock where lock_name='業(yè)務(wù)名稱', resource='業(yè)務(wù)id';
不存在: insert into lock set lock_name='業(yè)務(wù)名稱', resource='業(yè)務(wù)id' , version=1;
獲取版本: version
業(yè)務(wù)操作: 取數(shù)據(jù),合并數(shù)據(jù),寫回?cái)?shù)據(jù)
寫回到DB: update lock set version=version+1 where lock_name='業(yè)務(wù)名稱' and resource='業(yè)務(wù)id' and version= #{version};
寫回成功: 操作成功
寫回失敗: 回滾事務(wù),從頭操作

樂(lè)觀鎖寫入失敗會(huì)回滾整個(gè)事務(wù),因此如果寫入沖突很頻繁的場(chǎng)景不適合使用樂(lè)觀鎖,大量的事務(wù)回滾會(huì)給DB巨大壓力,最終影響到具體業(yè)務(wù)系統(tǒng)。

總結(jié)

分布式鎖的原理實(shí)際上很容易理解,難的是如何在具體業(yè)務(wù)場(chǎng)景上選擇最合適的方案。無(wú)論是哪一種鎖方案都是與業(yè)務(wù)密切關(guān)聯(lián),總之沒有完美的分布式鎖方案,只有最適合當(dāng)前業(yè)務(wù)的鎖方案。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • Java使用Redisson分布式鎖實(shí)現(xiàn)原理
  • Java編程redisson實(shí)現(xiàn)分布式鎖代碼示例
  • Redis分布式鎖的正確實(shí)現(xiàn)方法總結(jié)
  • Redis分布式鎖的實(shí)現(xiàn)方式(redis面試題)
  • springboot redis分布式鎖代碼實(shí)例
  • SpringBoot使用Redisson實(shí)現(xiàn)分布式鎖(秒殺系統(tǒng))
  • SpringBoot集成Redisson實(shí)現(xiàn)分布式鎖的方法示例
  • Java Redis分布式鎖的正確實(shí)現(xiàn)方式詳解
  • Java redisson實(shí)現(xiàn)分布式鎖原理詳解

標(biāo)簽:武威 臨汾 聊城 白銀 云浮 湖南 湖北 烏海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解》,本文關(guān)鍵詞  MySQL,借助,實(shí)現(xiàn),分布式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品免费国产二区三区| 91精品国产高清一区二区三区| 成人永久免费视频| 精品电影一区二区| 精品无人区卡一卡二卡三乱码免费卡| 成人综合日日夜夜| 亚洲欧洲日韩综合一区二区| 91视频免费播放| 亚洲一区二区三区四区不卡| 欧美高清你懂得| 美女高潮久久久| 久久久综合网站| 不卡的av电影在线观看| 亚洲制服欧美中文字幕中文字幕| 欧美日韩aaaaa| 精品一区二区久久久| 国产欧美精品一区aⅴ影院| 不卡高清视频专区| 亚洲高清视频在线| 精品少妇一区二区三区在线视频| 国产福利一区在线| 亚洲国产精品尤物yw在线观看| 欧美一级片在线| 国产成人8x视频一区二区| 一区二区三区视频在线看| 日韩精品一区在线| 色噜噜夜夜夜综合网| 久久99精品一区二区三区| 亚洲精品自拍动漫在线| 欧美一区二区三区在线观看视频 | 欧美色倩网站大全免费| 亚洲1区2区3区视频| 中文字幕二三区不卡| 3d成人h动漫网站入口| 成人精品一区二区三区四区| 丝袜美腿高跟呻吟高潮一区| 国产午夜精品福利| 欧美精品v日韩精品v韩国精品v| 99久久婷婷国产综合精品| 黄色资源网久久资源365| 一级精品视频在线观看宜春院 | 91麻豆蜜桃一区二区三区| 麻豆精品视频在线| 亚洲精品成a人| 国产精品美女久久久久久久| 欧美精品一区二区久久久| 91国产精品成人| 99久久综合狠狠综合久久| 麻豆国产精品官网| 夜色激情一区二区| 亚洲丝袜另类动漫二区| 国产精品久久午夜夜伦鲁鲁| 久久亚洲捆绑美女| 亚洲精品在线观看视频| 精品国产伦一区二区三区观看方式| 91精品国产高清一区二区三区| 欧美日韩国产美女| 欧美日韩免费高清一区色橹橹| 北岛玲一区二区三区四区 | 亚洲丰满少妇videoshd| 亚洲私人黄色宅男| 成人欧美一区二区三区小说| 亚洲视频在线一区观看| 亚洲色图一区二区三区| 国产精品国产三级国产aⅴ中文 | 欧美一区二区三区在线看| 欧美三级欧美一级| 欧美色视频在线| www.爱久久.com| 国内偷窥港台综合视频在线播放| 亚洲影院久久精品| 日韩国产成人精品| 久久精品国产久精国产爱| 国产原创一区二区三区| 青青草97国产精品免费观看无弹窗版| 亚洲欧美一区二区三区国产精品| 精品国产免费人成在线观看| 精品国内片67194| 国产欧美一区二区精品仙草咪| 国产日韩精品一区| 国产精品久久久久永久免费观看| 综合婷婷亚洲小说| 日韩经典中文字幕一区| 九色综合国产一区二区三区| 成人性色生活片免费看爆迷你毛片| 97国产一区二区| 欧美日韩成人激情| 久久综合九色综合97婷婷| 久久久久国产精品麻豆| 亚洲美女区一区| 亚洲第一电影网| 国产一区美女在线| 色狠狠av一区二区三区| 欧美日韩精品综合在线| 欧美videos中文字幕| 国产欧美精品一区aⅴ影院| 中文字幕一区二区三区视频| 亚洲一区在线免费观看| 蜜桃av一区二区在线观看| 99久久精品免费看国产| 欧美精选一区二区| 日韩欧美的一区二区| 中文字幕免费不卡在线| 首页亚洲欧美制服丝腿| 国产福利电影一区二区三区| 9191成人精品久久| 亚洲欧洲在线观看av| 经典三级一区二区| 99re热这里只有精品视频| 88在线观看91蜜桃国自产| 精品久久人人做人人爽| 日韩va亚洲va欧美va久久| 国产专区欧美精品| 欧美日韩一本到| 国产精品美女久久久久久| 奇米在线7777在线精品| 国产精品888| 91精品一区二区三区久久久久久| 成人免费在线播放视频| 亚洲成人精品一区| 国产在线国偷精品产拍免费yy| 9l国产精品久久久久麻豆| 91精品久久久久久久99蜜桃| 亚洲男女一区二区三区| 国产精品一区专区| 欧美色爱综合网| 亚洲国产高清aⅴ视频| 日本麻豆一区二区三区视频| 欧洲中文字幕精品| 中文av一区二区| zzijzzij亚洲日本少妇熟睡| 国产欧美日产一区| 成人国产电影网| 久久久不卡影院| 国产剧情一区二区三区| 日韩一级片在线观看| 亚洲高清久久久| 91女人视频在线观看| 欧美激情综合五月色丁香小说| 国产伦精品一区二区三区在线观看 | 中文字幕五月欧美| 国产a级毛片一区| 久久久一区二区三区捆绑**| 国产精品一区三区| 国产欧美视频在线观看| 成人av电影在线| 亚洲高清免费视频| 欧美蜜桃一区二区三区| 日韩av电影免费观看高清完整版 | 欧美午夜精品电影| 日本怡春院一区二区| 日韩一区二区三区精品视频 | 午夜在线电影亚洲一区| 欧美精品三级在线观看| 蜜桃一区二区三区在线| 欧美成人a∨高清免费观看| 狠狠色丁香婷综合久久| 中文字幕日韩欧美一区二区三区| 成人少妇影院yyyy| 亚洲视频一二三区| 97精品国产97久久久久久久久久久久 | av电影一区二区| 国产精品网曝门| 国产成人综合视频| 亚洲三级免费观看| 欧日韩精品视频| 麻豆精品视频在线观看视频| 精品国产区一区| 91毛片在线观看| 国产麻豆精品在线观看| 中文字幕字幕中文在线中不卡视频| 国产91丝袜在线观看| 亚洲欧美成aⅴ人在线观看| 91亚洲大成网污www| 老司机精品视频一区二区三区| 久久影院午夜片一区| av在线免费不卡| caoporn国产精品| 亚洲国产综合视频在线观看| 欧美无人高清视频在线观看| 成人小视频在线| 久久er精品视频| 一个色综合网站| 国产精品日产欧美久久久久| 欧美日韩一区二区在线视频| 老司机午夜精品| 综合激情网...| 中文字幕免费观看一区| 日韩欧美国产麻豆| 欧美无人高清视频在线观看| 国产成人av福利| 久久综合综合久久综合| 美女性感视频久久| 久久久久久一级片| 91精品国产91热久久久做人人| 成人午夜激情视频| 国内精品伊人久久久久av影院| 一区二区三区中文在线| 精品精品国产高清一毛片一天堂| 成人美女视频在线看|