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