使用zookeeper實現分佈式鎖

1、前言

在同一個jvm進程中時,能夠使用JUC提供的一些鎖來解決多個線程競爭同一個共享資源時候的線程安全問題,可是當多個不一樣機器上的不一樣jvm進程共同競爭同一個共享資源時候,juc包的鎖就無能無力了,這時候就須要分佈式鎖了。常見的有使用zk的最小版本,redis的set函數,數據庫鎖來實現,本節咱們談談使用zookeeper的序列節點機制來實現一個分佈式鎖。redis

2、使用zookeeper實現分佈式鎖

首先咱們先來看看使用zk實現分佈式鎖的原理,在zk中是使用文件目錄的格式存放節點內容,其中節點類型分爲:數據庫

  • 持久節點(PERSISTENT ):節點建立後,一直存在,直到主動刪除了該節點。
  • 臨時節點(EPHEMERAL):生命週期和客戶端會話綁定,一旦客戶端會話失效,這個節點就會自動刪除。
  • 序列節點(SEQUENTIAL ):多個線程建立同一個順序節點時候,每一個線程會獲得一個帶有編號的節點,節點編號是遞增不重複的,以下圖:
相關文章
相關標籤/搜索