1.數據庫
性能差
2.redis
可能出現死鎖
3.zookeeper
功能:zk存儲,讀取數據;數據節點監聽服務,臨時節點跟客戶端斷開數據丟失;持久節點跟客戶端斷開數據還在
兩種方式:
1.創建臨時節點,創建成功獲得鎖,創建同名則報錯,監聽lock節點的刪除事件,加鎖線程執行完業務邏輯解鎖刪除臨時節點,則觸發刪除事件,則重新去獲得鎖
2.創建臨時有序節點,只需要監聽一個,所以性能好,但是資源佔用多
trylock:創建臨時有序節點,獲取臨時節點集合並排序,判斷自己是不是最小的節點,是則加鎖成功;否則獲得前邊的節點監聽其刪除事件,前邊節點刪除時,則重新trylock
unlock:釋放鎖就是刪除節點或者客戶端斷開
第一種:
第二種: