分布式鎖是控制分布式系統(tǒng)之間同步訪問(wèn)共享資源的一種方式。分布式環(huán)境下會(huì)出現(xiàn)資源競(jìng)爭(zhēng)的地方都需要分布式鎖的協(xié)調(diào)。
分布式鎖的作用:在整個(gè)系統(tǒng)提供一個(gè)全局、唯一的鎖,在分布式系統(tǒng)中每個(gè)系統(tǒng)在進(jìn)行相關(guān)操作的時(shí)候需要獲取到該鎖,才能執(zhí)行相應(yīng)操作。
服務(wù)以多實(shí)例形式部署,形成集群。每一個(gè)實(shí)例都會(huì)有一個(gè)自己的JVM運(yùn)行環(huán)境,因此即便是同一個(gè)用戶,如果并發(fā)的發(fā)起了多個(gè)請(qǐng)求,由于**請(qǐng)求進(jìn)入了多個(gè)JVM,就會(huì)出現(xiàn)多個(gè)鎖對(duì)象(用戶id對(duì)象),自然就有多個(gè)鎖監(jiān)視器**。此時(shí)就會(huì)出現(xiàn)每個(gè)JVM內(nèi)部都有一個(gè)線程獲取鎖成功的情況,沒(méi)有達(dá)到互斥的效果,并發(fā)安全問(wèn)題就可能再次發(fā)生了:
可見(jiàn),在集群環(huán)境下,JVM提供的傳統(tǒng)鎖機(jī)制就不再安全了。
那么該如何解決這個(gè)問(wèn)題呢?
解決這個(gè)問(wèn)題讓每個(gè)實(shí)例去使用各自的JVM內(nèi)部鎖監(jiān)視器,而是應(yīng)該在多個(gè)實(shí)例外部尋找一個(gè)鎖監(jiān)視器,多個(gè)實(shí)例爭(zhēng)搶同一把鎖。像這樣的鎖,就稱為分布式鎖。
分布式鎖可以根據(jù)以下幾個(gè)方案實(shí)現(xiàn):
– 基于數(shù)據(jù)庫(kù)表
操作數(shù)據(jù)庫(kù)需要較大的開(kāi)銷,性能差
– 基于緩存實(shí)現(xiàn)分布式鎖(redis)
– 基于Zookeeper實(shí)現(xiàn)分布式鎖
– 基于consul實(shí)現(xiàn)分布式鎖
– 基于etcd實(shí)現(xiàn)分布式鎖
如果你對(duì)java開(kāi)發(fā)感興趣想要成為一名程序員那么快進(jìn)入云和數(shù)據(jù)官網(wǎng)吧我們有專門的客服老師回答您關(guān)心的問(wèn)題。
云和數(shù)據(jù)ICT職業(yè)教育發(fā)揮公司產(chǎn)業(yè)化優(yōu)勢(shì)與技術(shù)積淀,整合國(guó)內(nèi)外優(yōu)秀師資,累計(jì)自主研發(fā)230余項(xiàng)教輔、教材,300余項(xiàng)實(shí)踐教學(xué)案例與實(shí)訓(xùn)平臺(tái),采用六位一體項(xiàng)目制教學(xué)模式,年培養(yǎng)高端ICT技術(shù)人才超10000人,累計(jì)為企業(yè)輸送高端泛ICT技術(shù)人才超9萬(wàn)人,學(xué)員60%來(lái)自于口碑推薦。云和數(shù)據(jù)人才培養(yǎng)技術(shù)方向涵蓋大數(shù)據(jù)、JAVA軟件工程、UI用戶體驗(yàn)設(shè)計(jì)、前端開(kāi)發(fā)、軟件測(cè)試、智能制造、虛擬現(xiàn)實(shí)、云計(jì)算、人工智能九大方向,以九大精品課程為基礎(chǔ),八大就業(yè)基地為依托,一次就業(yè)率99.02%,61.9%就業(yè)薪資超1W,以大數(shù)據(jù)為首的精品專業(yè)平均薪資13.25K。
Copyright ? 2013-2021 河南云和數(shù)據(jù)信息技術(shù)有限公司 豫ICP備14003305號(hào) ISP經(jīng)營(yíng)許可證:豫B-20160281