久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

ZooKeeper共享鎖怎么創建

173次閱讀
沒有評論

共計 1978 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹“ZooKeeper 共享鎖怎么創建”,在日常操作中,相信很多人在 ZooKeeper 共享鎖怎么創建問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ZooKeeper 共享鎖怎么創建”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

眾所周知,在 Java 開發中,要創建一個單進程鎖非常簡單,使用 JDK 中自帶的 java.util.concurrent.locks.Lock 接口即可實現鎖的功能。

如今已經到了大數據、云的時代,而這種鎖已經無法滿足集群服務間鎖的需求了,本文將簡單說下如何使用 ZooKeeper 來實現共享鎖功能。至于什么是共享鎖呢?理解起來也很簡單:就是指在多個實例中使用同一把鎖。(我好像廢話了……)

同樣閃亮登場的還是我們的 Curator Framework,它封裝了各種場景的鎖,比如:共享鎖、讀寫鎖、可撤銷鎖等。

LockStartup.java

package org.bigmouth.common.zookeeper.shared;
 
import java.util.concurrent.TimeUnit;
 
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.locks.InterProcessSemaphoreMutex;
import org.bigmouth.common.zookeeper.config.ZooKeeperFactory;
 
 
public class LockStartup {
 
 public static void main(String[] args) throws Exception { CuratorFramework client = ZooKeeperFactory.get(); // ZooKeeperFactory 在上一篇文章《ZooKeeper 學習筆記—配置管理》中有
 final InterProcessSemaphoreMutex processSemaphoreMutex = new InterProcessSemaphoreMutex(client,  /lock 
 printProcess(processSemaphoreMutex);
 
 System.out.println( Starting get lock... 
 boolean flag = processSemaphoreMutex.acquire(12, TimeUnit.SECONDS);
 System.out.println(flag ?  Getting lock successful.  :  Getting failed! 
 
 printProcess(processSemaphoreMutex);
 
 Thread.sleep(20 * 1000);
 
 if (processSemaphoreMutex.isAcquiredInThisProcess()) { processSemaphoreMutex.release();
 }
 printProcess(processSemaphoreMutex);
 client.close();
 }
 
 private static void printProcess(final InterProcessSemaphoreMutex processSemaphoreMutex) {
 //  在本進程中鎖是否激活(是否正在執行) System.out.println(isAcquiredInThisProcess:   + processSemaphoreMutex.isAcquiredInThisProcess());
 }
 
}

啟動 LockStartup,得到如下結果:

接著再啟動一個 LockStartup 實例,結果是無法獲取到鎖。程序還是會等待 12 秒,如果 12 秒后仍然無法獲取到鎖則結束:

如果我們把處理時間設置為 10 秒,等待時間為 12 秒。那么當第一個進程釋放后,第二個進程將會獲取到鎖。

Thread.sleep(10 * 1000);

還有適合其他場景的共享鎖就不一一做例子了,使用起來都類似。可以看下接口 org.apache.curator.framework.recipes.locks.InterProcessLock 的實現類。

到此,關于“ZooKeeper 共享鎖怎么創建”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計1978字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 探索| 佛学| 长春市| 宁城县| 宽甸| 五常市| 岢岚县| 莲花县| 萝北县| 哈密市| 大厂| 德昌县| 漳州市| 迁安市| 平乡县| 缙云县| 应用必备| 习水县| 报价| 三台县| 平山县| 石景山区| 泸西县| 廊坊市| 仙桃市| 平乐县| 观塘区| 苗栗市| 和林格尔县| 泰州市| 泰顺县| 台山市| 东兰县| 元朗区| 贵港市| 昭平县| 保定市| 芒康县| 望城县| 泰和县| 新宾|