如何理解分佈式鎖

  • 什麼是分佈式鎖:
    分佈式鎖,是控制分佈式系統之間同步訪問共享資源的一種方式。在分佈式系統中,常常需要協調他們的動作。如果不同的系統或是同一個系統的不同主機之間共享了一個或一組資源,那麼訪問這些資源的時候,往往需要互斥來防止彼此干擾來保證一致性,在這種情況下,便需要使用到分佈式鎖。
  • 各種分佈式鎖信息參考http://blog.csdn.net/zxp_cpinfo/article/details/53692922
  • 其中ZooKeeper鎖原理寫的不是很明白(ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務):
    • 當很多進程需要訪問共享資源時,我們可以通過zk來實現分佈式鎖。主要步驟是:
      1. 建立一個節點,假如名爲:lock 。節點類型爲持久節點(PERSISTENT) 。
      2. 每當進程需要訪問共享資源時,會調用分佈式鎖的lock()或tryLock()方法獲得鎖,這個時候會在第一步創建的lock節點下建立相應的順序子節點,節點類型爲臨時順序節點(EPHEMERAL_SEQUENTIAL),通過組成特定的名字name+lock+順序號。
      3. 在建立子節點後,對lock下面的所有以name開頭的子節點進行排序,判斷剛剛建立的子節點順序號是否是最小的節點,假如是最小節點,則獲得該鎖對資源進行訪問。
      4. 假如不是該節點,就獲得該節點的上一順序節點,並給該節點是否存在註冊監聽事件。同時在這裏阻塞。等待監聽事件的發生,獲得鎖控制權。
      5. 當調用完共享資源後,調用unlock()方法,關閉zk,進而可以引發監聽事件,釋放該鎖。
        實現的分佈式鎖是嚴格的按照順序訪問的併發鎖。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章