成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

ZooKeeper常用操作API有哪些

今天就跟大家聊聊有關(guān)ZooKeeper 常用操作API有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、下陸網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為下陸等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

ZooKeeper是一個(gè)用于分布式應(yīng)用程序的分布式開源協(xié)調(diào)服務(wù)。它使用一組簡(jiǎn)單的操作原語,使得分布式應(yīng)用可以實(shí)現(xiàn)更高層次的服務(wù)——如同步、配置維護(hù)、群組和命名管理等。ZK具有高性能、高可用(復(fù)制)、有序等特征。

1. create

Class:org.apache.zookeeper.ZooKeeper
public String create(String path, byte[] data, List acl, CreateMode createMode) throws KeeperException, InterruptedException
public void create(String path, byte[] data, List acl, CreateMode createMode, AsyncCallback.StringCallback cb, Object ctx)
創(chuàng)建一個(gè)給定路徑(path)的節(jié)點(diǎn),并給它設(shè)置數(shù)據(jù)(data)和訪問控制列表(acl)。ZooKeeper中的節(jié)點(diǎn)相對(duì)于文件系統(tǒng)中的目錄結(jié)構(gòu),即是”directory”又是”regular file”。第二個(gè)create方法是create的異步版本,當(dāng)創(chuàng)建完成時(shí)則調(diào)用異步callback。

(1). org.apache.zookeeper.data.ACL

這部分節(jié)選說說Zookeeper中的ACL
ZooKeeper通過ACL來對(duì)ZNode進(jìn)行訪問控制。ZooKeeper客戶端為znode指定ACL列表,ZooKeeper服務(wù)器根據(jù)ACL列表判定某個(gè)請(qǐng)求ZNode的客戶端是否有對(duì)應(yīng)操作的權(quán)限。
一個(gè)ACL對(duì)象由schema:ID和Permissions組成。
a). scheme: scheme對(duì)應(yīng)于采用哪種方案來進(jìn)行權(quán)限管理,zookeeper實(shí)現(xiàn)了一個(gè)pluggable的ACL方案,可以通過擴(kuò)展scheme,來擴(kuò)展ACL的機(jī)制。zookeeper-3.4.4缺省支持下面幾種scheme:
world: 它下面只有一個(gè)id, 叫anyone, world:anyone代表任何人,zookeeper中對(duì)所有人有權(quán)限的結(jié)點(diǎn)就是屬于world:anyone的
auth: 它不需要id, 只要是通過authentication的user都有權(quán)限(zookeeper支持通過kerberos來進(jìn)行authencation, 也支持username/password形式的authentication)
digest: 它對(duì)應(yīng)的id為username:BASE64(SHA1(password)),它需要先通過username:password形式的authentication
ip: 它對(duì)應(yīng)的id為客戶機(jī)的IP地址,設(shè)置的時(shí)候可以設(shè)置一個(gè)ip段,比如ip:192.168.1.0/16, 表示匹配前16個(gè)bit的IP段
super: 在這種scheme情況下,對(duì)應(yīng)的id擁有超級(jí)權(quán)限,可以做任何事情(cdrwa)
b). perm. ZooKeeper中有5種權(quán)限,從低位到高位分別是READ、WRITE、CREATE、DELETE和ADMIN,ACL的Permissions可以是5種權(quán)限中的1種或多種,它們的含義是:
* READ: 允許獲取該節(jié)點(diǎn)的值和列出子節(jié)點(diǎn)。
* WRITE: 允許設(shè)置該節(jié)點(diǎn)的值。
* CREATE: 允許創(chuàng)建子節(jié)點(diǎn)。
* DELETE: 可以刪除子節(jié)點(diǎn)。
* ADMIN: 允許為該節(jié)點(diǎn)設(shè)置權(quán)限。

(2). org.apache.zookeeper.CreateMode

org.apache.zookeeper.CreateMode可以設(shè)置znode是否為EPHEMERAL或者SEQUENTIAL??梢詾橄旅嫠姆N值:
PERSISTENT 持久化目錄znode
PERSISTENT_SEQUENTIAL 順序自動(dòng)編號(hào)的目錄znode。這個(gè)目錄節(jié)點(diǎn)是根據(jù)當(dāng)前已存在的節(jié)點(diǎn)數(shù)遞增。
EPHEMERAL 臨時(shí)目錄znode,一旦創(chuàng)建這個(gè)znode的客戶端和服務(wù)器斷開,這個(gè)節(jié)點(diǎn)就會(huì)自動(dòng)刪除。臨時(shí)節(jié)點(diǎn)(EPHEMERAL)不能有子節(jié)點(diǎn)數(shù)據(jù)
EPHEMERAL_SEQUENTIAL 臨時(shí)自動(dòng)編號(hào)znode。

(3). zkCli命令

在zkCli中實(shí)現(xiàn)了create的命令封裝,可以用戶測(cè)試和數(shù)據(jù)管理:
create [-s] [-e] path data acl
其中”-s”表示創(chuàng)建一個(gè)順序自動(dòng)編號(hào)的節(jié)點(diǎn),”-e”表示創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn).默認(rèn)為持久性節(jié)點(diǎn)
例如:
創(chuàng)建一個(gè)永久節(jié)點(diǎn)和臨時(shí)節(jié)點(diǎn)

create  /test null
Created /test
create -e /test0 null
Created /test0

創(chuàng)建一個(gè)順序自動(dòng)編號(hào)的節(jié)點(diǎn),ACL為使用digest(用戶名:test 密碼:debugo),權(quán)限為所有(rwcda)。關(guān)于digest的產(chǎn)生,可以參考zookeeper中 DigestAuthenticationProvider.generateDigest(String ipName)方法;通過向此方法指定原始的用戶名和密碼即可獲得”digest”之后的字符串,比如傳入”test:test”,將會(huì)得 到”test:V28q/NynI4JI3Rk54h0r8O5kMug=”,其內(nèi)部原理是將”密碼”部分進(jìn)行MD5 + sha1操作.

create -s /test0/test null digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:rwcda
Ephemerals cannot have children: /test0/test
create -s /test/test null digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:rwcda
Created /test/test0000000000

創(chuàng)建一個(gè)節(jié)點(diǎn),其ACL使用ip(172.19.17.0/24)只具有讀權(quán)限

create /test/test1 "hello world" ip:172.19.17.0/24:r
Created /test/test1

2. exist

class:org.apache.zookeeper.ZooKeeper
public Stat exists(String path, Watcher watcher) throws KeeperException, InterruptedException
返回某個(gè)path的znode是否存在。并設(shè)置是否監(jiān)控這個(gè)節(jié)點(diǎn)(第二個(gè)參數(shù)boolean watcher)。當(dāng)?shù)诙€(gè)參數(shù)為true且這個(gè)語句執(zhí)行成功時(shí),監(jiān)聽器(watcher)就會(huì)在成功執(zhí)行建立節(jié)點(diǎn)/刪除節(jié)點(diǎn)/修改該節(jié)點(diǎn)數(shù)據(jù)時(shí)候被觸發(fā)。
exists(String, Watcher)
重載方法,這里可以指定特定的監(jiān)聽器(watcher)對(duì)象。
exists(String, Watcher, AsyncCallback.StatCallback, Object)
exists(String, boolean, AsyncCallback.StatCallback, Object)
exist的異步實(shí)現(xiàn)

3. delete

public void delete(String path, int version) throws InterruptedException, KeeperException
刪除path對(duì)應(yīng)的znode,version為-1可以匹配任何版本,也就是刪除這個(gè)節(jié)點(diǎn)所有的數(shù)據(jù)。此外,delete同樣存在異步版本。
delete(String path, int version, AsyncCallback.VoidCallback cb, Object ctx)
delete的異步版本。
例如zkCli中刪除某個(gè)節(jié)點(diǎn):

delete /test/test1

4. getChildren

public List getChildren(String path, boolean watch) throws KeeperException, InterruptedException
獲取指定path下所有的子znode,這個(gè)方法和exist一樣同樣可以設(shè)置watcher/指定特定的Watcher對(duì)象。

5. setData & getData

Stat setData(String path, byte[] data, int version)
當(dāng)給定path的節(jié)點(diǎn)存在時(shí)給path設(shè)置數(shù)據(jù),可以指定這個(gè)數(shù)據(jù)的版本號(hào)。如果version為-1則可以匹配任意版本。
void setData(String path, byte[] data, int version, AsyncCallback.StatCallback cb, Object ctx)
setData的異步版本。
byte[] getData(String path, Watcher watcher, Stat stat)
獲取這個(gè)path對(duì)應(yīng)的znode節(jié)點(diǎn)的數(shù)據(jù),數(shù)據(jù)的版本等信息可以通過stat來指定。
void getData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx)
getData的異步版本。

6. setACL和getACL

Stat setACL(String path, List acl, int version)
給某個(gè)znode節(jié)點(diǎn)重新設(shè)置訪問權(quán)限,需要注意的是ZooKeeper中的目錄節(jié)點(diǎn)權(quán)限都不具有傳遞性,父znode節(jié)點(diǎn)的權(quán)限不能傳遞給子目錄節(jié)點(diǎn)。在create中已經(jīng)介紹了ACL的設(shè)置方法,可以設(shè)置一系列ACL規(guī)則(即指定一系列ACL對(duì)象)。
void setACL(String path, List acl, int version, AsyncCallback.StatCallback cb, Object ctx)
setACL的異步版本
List getACL(String path, Stat stat)
返回某個(gè)znode節(jié)點(diǎn)的ACL對(duì)象的列表。
void getACL(String path, Stat stat, AsyncCallback.ACLCallback cb, Object ctx)
getACL的異步版本
例如zkCli中設(shè)置某個(gè)ACL規(guī)則:

[zk: localhost:2181(CONNECTED) 43] setAcl /test world:anyone:r
cZxid = 0xf000500ed
ctime = Wed Sep 24 15:13:29 CST 2014
......
[zk: localhost:2181(CONNECTED) 44] getAcl /test
'world,'anyone
: r

看完上述內(nèi)容,你們對(duì)ZooKeeper 常用操作API有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁標(biāo)題:ZooKeeper常用操作API有哪些
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article48/jjpeep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站制作電子商務(wù)、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站排名、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
原平市| 兴义市| 南京市| 文安县| 博乐市| 资溪县| 蕲春县| 阳春市| 达州市| 科技| 扶风县| 通州区| 大同市| 阿鲁科尔沁旗| 贡觉县| 永顺县| 莆田市| 南昌县| 通州区| 达州市| 凌源市| 长泰县| 财经| 开封县| 汽车| 东明县| 普兰县| 隆尧县| 枣庄市| 昌宁县| 景谷| 大同县| 瑞昌市| 县级市| 长海县| 沈丘县| 通山县| 大邑县| 平江县| 长顺县| 上蔡县|