1. 程式人生 > >關於java web專案併發鎖的理解

關於java web專案併發鎖的理解

關於分散式鎖的幾種常用選擇和方案,小弟不才,希望和大家討論討論。

1.當資料庫單一的時候,利用資料庫的鎖機制。

主要分為兩種,一種是悲觀鎖,悲觀鎖裡又分共享鎖和排他鎖,個人覺得共享鎖在併發上做的更好一點,畢竟程式碼可以一直跑到寫SQL處才開始阻塞。另一種是樂觀鎖,樂觀鎖就是版本號version控制行級記錄,缺點就是需要程式碼做額外處理,如果更新失敗,是拋異常回滾還是怎樣。。

2.當資料庫叢集時,利用redis做分散式鎖比較常見,在需要加鎖的地方從redis裡獲取鎖,程式碼執行完畢釋放鎖。當然了別忘了設定好redis鎖的自動釋放時間。

3.利用zookeeper做分散式鎖,還沒搞過,暫且不談。