精品视频在线免费观看_国产精品资源网_欧美日韩亚洲综合在线_自拍视频国产精品

原創(chuàng)生活

國內(nèi) 商業(yè) 滾動

基金 金融 股票

期貨金融

科技 行業(yè) 房產(chǎn)

銀行 公司 消費(fèi)

生活滾動

保險(xiǎn) 海外 觀察

財(cái)經(jīng) 生活 期貨

當(dāng)前位置:滾動 >

ZooKeeper分布式協(xié)調(diào)服務(wù)(節(jié)點(diǎn)分類、事件監(jiān)聽、java集成)

文章來源:阿里云  發(fā)布時(shí)間: 2023-01-12 03:55:47  責(zé)任編輯:cfenews.com
+|-

ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。

安裝啟動

安裝:把zk安裝包上傳到/opt目錄下,并切換到/opt目錄下,執(zhí)行以下指令


(資料圖片僅供參考)

#解壓tar-zxvfzookeeper-3.7.0-bin.tar.gz#重命名mvapache-zookeeper-3.7.0-bin/zookeeper#打開zookeeper根目錄cd/opt/zookeeper#創(chuàng)建一個(gè)數(shù)據(jù)目錄,備用mkdirdata#打開zk的配置目錄cd/opt/zookeeper/conf#copy配置文件,zk啟動時(shí)會加載zoo.cfg文件cpzoo_sample.cfgzoo.cfg#編輯配置文件vimzoo.cfg#修改dataDir參數(shù)為之前創(chuàng)建的數(shù)據(jù)目錄:/opt/zookeeper/data#切換到bin目錄cd/opt/zookeeper/bin#啟動./zkServer.shstart./zkServer.shstatus#查看啟動狀態(tài)./zkServer.shstop#停止./zkServer.shrestart#重啟./zkCli.sh#查看zk客戶端

如下,說明啟動成功:

相關(guān)概念

Zookeeper提供一個(gè)多層級的節(jié)點(diǎn)命名空間(節(jié)點(diǎn)稱為znode),每個(gè)節(jié)點(diǎn)都用一個(gè)以斜杠(/)分隔的路徑表示,而且每個(gè)節(jié)點(diǎn)都有父節(jié)點(diǎn)(根節(jié)點(diǎn)除外),非常類似于文件系統(tǒng)。并且每個(gè)節(jié)點(diǎn)都是唯一的。

znode節(jié)點(diǎn)有四種類型:

PERSISTENT:永久節(jié)點(diǎn)。客戶端與zookeeper斷開連接后,該節(jié)點(diǎn)依舊存在

EPHEMERAL:臨時(shí)節(jié)點(diǎn)。客戶端與zookeeper斷開連接后,該節(jié)點(diǎn)被刪除

PERSISTENT_SEQUENTIAL:永久節(jié)點(diǎn)、序列化。客戶端與zookeeper斷開連接后,該節(jié)點(diǎn)依舊存在,只是Zookeeper給該節(jié)點(diǎn)名稱進(jìn)行順序編號

EPHEMERAL_SEQUENTIAL:臨時(shí)節(jié)點(diǎn)、序列化。客戶端與zookeeper斷開連接后,該節(jié)點(diǎn)被刪除,只是Zookeeper給該節(jié)點(diǎn)名稱進(jìn)行順序編號

操作節(jié)點(diǎn)

創(chuàng)建這四種節(jié)點(diǎn):

[zk:localhost:2181(CONNECTED)0]create/aatest#創(chuàng)建持久化節(jié)點(diǎn)Created/aa[zk:localhost:2181(CONNECTED)1]create-s/bbtest#創(chuàng)建持久序列化節(jié)點(diǎn)Created/bb0000000001[zk:localhost:2181(CONNECTED)2]create-e/cctest#創(chuàng)建臨時(shí)節(jié)點(diǎn)Created/cc[zk:localhost:2181(CONNECTED)3]create-e-s/ddtest#創(chuàng)建臨時(shí)序列化節(jié)點(diǎn)Created/dd0000000003[zk:localhost:2181(CONNECTED)4]ls/#查看某個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn)[aa,bb0000000001,cc,dd0000000003,zookeeper][zk:localhost:2181(CONNECTED)5]stat/#查看某個(gè)節(jié)點(diǎn)的狀態(tài)cZxid=0x0ctime=ThuJan0108:00:00CST1970mZxid=0x0mtime=ThuJan0108:00:00CST1970pZxid=0x5cversion=3dataVersion=0aclVersion=0ephemeralOwner=0x0dataLength=0numChildren=5[zk:localhost:2181(CONNECTED)6]get/aa#查看某個(gè)節(jié)點(diǎn)的內(nèi)容test[zk:localhost:2181(CONNECTED)11]delete/aa#刪除某個(gè)節(jié)點(diǎn)[zk:localhost:2181(CONNECTED)7]ls/#再次查看[bb0000000001,cc,dd0000000003,zookeeper]

事件監(jiān)聽

在讀取數(shù)據(jù)時(shí),我們可以同時(shí)對節(jié)點(diǎn)設(shè)置事件監(jiān)聽,當(dāng)節(jié)點(diǎn)數(shù)據(jù)或結(jié)構(gòu)變化時(shí),zookeeper會通知客戶端。當(dāng)前zookeeper針對節(jié)點(diǎn)的監(jiān)聽有如下四種事件:

節(jié)點(diǎn)創(chuàng)建:stat-w/xx

當(dāng)/xx節(jié)點(diǎn)創(chuàng)建時(shí):NodeCreated

節(jié)點(diǎn)刪除:stat-w/xx

當(dāng)/xx節(jié)點(diǎn)刪除時(shí):NodeDeleted

節(jié)點(diǎn)數(shù)據(jù)修改:get-w/xx

當(dāng)/xx節(jié)點(diǎn)數(shù)據(jù)發(fā)生變化時(shí):NodeDataChanged

子節(jié)點(diǎn)變更:ls-w/xx

當(dāng)/xx節(jié)點(diǎn)的子節(jié)點(diǎn)創(chuàng)建或者刪除時(shí):NodeChildChanged

java客戶端

ZooKeeper的java客戶端有:原生客戶端、ZkClient、Curator框架(類似于redisson,有很多功能性封裝)。

引入依賴

org.apache.zookeeperzookeeper3.7.0

常用api及其方法

publicclassZkTest{publicstaticvoidmain(String[]args)throwsKeeperException,InterruptedException{//獲取zookeeper鏈接CountDownLatchcountDownLatch=newCountDownLatch(1);ZooKeeperzooKeeper=null;try{zooKeeper=newZooKeeper("172.16.116.100:2181",30000,newWatcher{@Overridepublicvoidprocess(WatchedEventevent){if(Event.KeeperState.SyncConnected.equals(event.getState)&&Event.EventType.None.equals(event.getType)){System.out.println("獲取鏈接成功。。。。。。"+event);countDownLatch.countDown;}}});countDownLatch.await;}catch(Exceptione){e.printStackTrace;}//創(chuàng)建一個(gè)節(jié)點(diǎn),1-節(jié)點(diǎn)路徑2-節(jié)點(diǎn)內(nèi)容3-節(jié)點(diǎn)的訪問權(quán)限4-節(jié)點(diǎn)類型//OPEN_ACL_UNSAFE:任何人可以操作該節(jié)點(diǎn)//CREATOR_ALL_ACL:創(chuàng)建者擁有所有訪問權(quán)限//READ_ACL_UNSAFE:任何人都可以讀取該節(jié)點(diǎn)//zooKeeper.create("/zktest/aa","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);zooKeeper.create("/test","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);//zooKeeper.create("/zktest/cc","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT_SEQUENTIAL);//zooKeeper.create("/zktest/dd","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);//zooKeeper.create("/zktest/dd","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);//zooKeeper.create("/zktest/dd","haha~~".getBytes,ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);//判斷節(jié)點(diǎn)是否存在Statstat=zooKeeper.exists("/test",true);if(stat!=null){System.out.println("當(dāng)前節(jié)點(diǎn)存在!"+stat.getVersion);}else{System.out.println("當(dāng)前節(jié)點(diǎn)不存在!");}//判斷節(jié)點(diǎn)是否存在,同時(shí)添加監(jiān)聽zooKeeper.exists("/test",event->{});//獲取一個(gè)節(jié)點(diǎn)的數(shù)據(jù)byte[]data=zooKeeper.getData("/zktest/ss0000000001",false,null);System.out.println(newString(data));//查詢一個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn)Listchildren=zooKeeper.getChildren("/test",false);System.out.println(children);//更新zooKeeper.setData("/test","wawa...".getBytes,stat.getVersion);//刪除一個(gè)節(jié)點(diǎn)//zooKeeper.delete("/test",-1);if(zooKeeper!=null){zooKeeper.close;}}}

關(guān)鍵詞: 事件監(jiān)聽 協(xié)調(diào)服務(wù)

專題首頁|財(cái)金網(wǎng)首頁

原創(chuàng)
新聞

精彩
互動

獨(dú)家
觀察

京ICP備2021034106號-38   營業(yè)執(zhí)照公示信息  聯(lián)系我們:55 16 53 8 @qq.com  財(cái)金網(wǎng)  版權(quán)所有  cfenews.com
主站蜘蛛池模板: 日韩在线视频网| 国产精品一区二区免费| 欧美成在线观看| 久久精品国产sm调教网站演员| 日韩av一区二区三区在线 | 日韩一区视频在线| 国产精品裸体一区二区三区| 国产一区福利视频| 日本丰满少妇黄大片在线观看| 亚洲一区二区三区在线观看视频 | 国产精品国语对白| 国产在线观看福利| 欧美日韩在线观看一区| 精品久久久久久无码中文野结衣| 人妻少妇精品久久| 91精品成人久久| 国产日韩在线精品av| 色综合久久中文字幕综合网小说 | 日本一区视频在线观看| 色婷婷成人综合| 午夜精品免费视频| 日本精品视频一区| 亚洲午夜精品福利| 国产精品高清免费在线观看| 国产精品自在线| 国产精品欧美日韩一区二区 | 国产精品视频自拍| 国产精品视频99| 99久久伊人精品影院| 亚洲一二区在线| 亚洲国产精品www| 日韩在线免费观看视频| 国产精品美女无圣光视频| 国产精品我不卡| 国产精品成人av在线| 91精品免费视频| 亚洲国产精品久久久久婷婷老年| 日韩日本欧美亚洲| 欧美日韩一区二区三区免费 | 国产不卡视频在线| 91精品国自产在线观看|