併發校驗庫存,造成庫存衝突的假象,扣成負數;
1.更新完庫存之後,讀取庫存,若<0則丟擲異常,回滾事務。
這樣做沒有加分布式鎖,且資料庫壓力較大。且效能不高。
2.統一加鎖,使之成為原子操作。
select ** for update 加鎖,只能加一次,加鎖期間其他執行緒不能獲取。
具體實現:
優缺點:
簡單方便,易於理解。併發量大的時候,對資料庫壓力大。鎖的庫與業務的資料庫需要分開。
set resource_name my_random_value nx px 3000
nx :因為redis是單執行緒的,並行請求變序列執行,只有乙個能設定成功,設定成功則獲得鎖
px: 失效時間,出現異常情況,鎖可以過期失效。這個時間怎麼設定,程式執行超過這個時間了怎麼辦
釋放鎖:
使用redis的delete命令,正常釋放的時候需要校驗隨機數是否相同,相同才能釋放。
使用lua指令碼,去校驗。
還有springboot的配置方法等
redis官網有介紹:
防止釋放其他執行緒的鎖。
加鎖實現:
釋放鎖,使用lua指令碼,加在finally裡:
儲存機構類似樹,有持久節點和瞬時節點
瞬時節點有序,沒有子節點,會話結束會消失。
zookeeper官網有介紹
觀察器只能觀察一次,節點有變化傳送給客戶端
直接呼叫即可
官網:
分布式鎖相關知識
分布式協調技術主要用來解決分布式環境當中多個程序之間的同步控制,讓他們有序的去訪問某種臨界資源,防止造成 髒資料 的後果。在這圖中有三颱機器,每台機器各跑乙個應用程式。然後我們將這三颱機器通過網路將其連線起來,構成乙個系統來為使用者提供服務,對使用者來說這個系統的架構是透明的,他感覺不到我這個系統是...
分布式事務相關
com 計 小型可執行程式的副檔名,序列通訊埠 域 commercial organizations,商業組織,公司 the component object model元件物件模型 我 們必須認識到,元件服務就是windows xp和2000中的com 是微軟元件物件模型 com 和微軟事務伺服器...
分布式架構相關知識
傳統單體架構 分布式架構系統 新功能開發 需要時間 容易開發和實現 部署不經常且容易部署 經常發布,部署複雜 隔離性故障影響範圍大 故障影響範圍小 架構設計 難度小難度級數增加 系統效能 響應時間快,吞吐量小 響應時間慢,吞吐量大 系統運維 運維簡單 運維複雜 新人上手 學習曲線大 應用邏輯 學習曲...