1. 程式人生 > >分散式鎖的理解之二

分散式鎖的理解之二

(1)程序多執行緒如何互斥?

(2)一個手機上兩個APP訪問一個檔案如何互斥?

(3)分散式環境下多個服務訪問一個資源如何互斥?

歸根結底,是利用一個互斥方能夠訪問的公共資源來實現分散式鎖,具體這個公共資源是redis來setnx,還是zookeeper,相反沒有這麼重要。

58到家APP新上線了匯入通訊錄好友功能,測試的同學發現,連續點選匯入會匯入重複資料:

解決思路:同一個使用者同時只能有一個匯入請求,需要做互斥,最簡易的方案,使用setnx快速解決。

(1)同一個使用者,多個service進行併發操作,service需要先去搶鎖

(2)搶到鎖的service,才去資料庫操作

具體這個鎖用setnx,還是zookeeper都不太重要,利用一個互斥方能夠訪問的公共資源來實現分散式鎖,這才是的重點。