ZooKeeper使用小記

下載安裝

下載

進入官方下載網(wǎng)站赂乐,選擇最近的穩(wěn)定版進行下載

軟件要求

安裝jdk富腊,且版本在java7以上

安裝

單機部署

  1. 將下載好的文件放到對應(yīng)目錄狮惜,linux系統(tǒng)一般將該文件放在/user/local下面
  2. 解壓文件:
tar xzvf apache-zookeeper-3.5.5-bin.tar.gz
  1. 創(chuàng)建配置文件conf/zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
  • tickTime單位是毫秒圾旨,用于心跳檢測与涡,最小超時時間為兩倍的tickTime惹谐。
  • dataDir指定一個已經(jīng)存在的空目錄,存儲zookeeper內(nèi)存數(shù)據(jù)庫的快照以及日志文件驼卖。
  • clientPort指定一個端口氨肌,監(jiān)聽客戶端的連接請求。
  1. 啟動zookeeper
bin/zkServer.sh start

管理zookeeper存儲

連接到zookeeper

bin/zkCli.sh -server 127.0.0.1:2181

list指令

ls /

創(chuàng)建一個新的znode酌畜,關(guān)聯(lián)數(shù)據(jù)"my_data"字符串

create /zk_test my_data

查看znode關(guān)聯(lián)的數(shù)據(jù)

get /zk_test

設(shè)置znode關(guān)聯(lián)的數(shù)據(jù)

set /zk_test junk

刪除znode

delete /zk_test

Java客戶端

maven加入zookeeper依賴

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.5.5</version>
</dependency>
  • 客戶端版本最好與服務(wù)端版本一致

代碼示例

  1. 創(chuàng)建znode
public class ZooKeeperClient {
    
    private static ZooKeeper zooKeeper;
    
    public static void main(String[] args){
        try {
            zooKeeper = new ZooKeeper("120.78.228.80:3181",5000, new Watcher() {
                
                @Override
                public void process(WatchedEvent event) {
                    try {
                        if(event.getState() == KeeperState.SyncConnected) {
                            String msg = zooKeeper.create("/zk_test", "my_data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
                            System.out.println(msg);
                        }
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
            try {
                Thread.sleep(100000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
  1. 查看znode關(guān)聯(lián)的數(shù)據(jù)
public class ZooKeeperClient {
    
    private static ZooKeeper zooKeeper;
    
    public static void main(String[] args){
        try {
            zooKeeper = new ZooKeeper("120.78.228.80:3181",5000, new Watcher() {
                
                @Override
                public void process(WatchedEvent event) {
                    try {
                        if(event.getState() == KeeperState.SyncConnected) {
                            byte[] bytes = zooKeeper.getData("/zk_test", false, null);
                            System.out.println(new String(bytes));
                        }
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
            try {
                Thread.sleep(100000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
  1. 設(shè)置znode關(guān)聯(lián)的數(shù)據(jù)
public class ZooKeeperClient {
    
    private static ZooKeeper zooKeeper;
    
    public static void main(String[] args){
        try {
            zooKeeper = new ZooKeeper("120.78.228.80:3181",5000, new Watcher() {
                
                @Override
                public void process(WatchedEvent event) {
                    try {
                        if(event.getState() == KeeperState.SyncConnected) {
                            zooKeeper.setData("/zk_test", "junk".getBytes(), -1);
                        }
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
            try {
                Thread.sleep(100000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
  1. 刪除znode
public class ZooKeeperClient {
    
    private static ZooKeeper zooKeeper;
    
    public static void main(String[] args){
        try {
            zooKeeper = new ZooKeeper("120.78.228.80:3181",5000, new Watcher() {
                
                @Override
                public void process(WatchedEvent event) {
                    try {
                        if(event.getState() == KeeperState.SyncConnected) {
                            zooKeeper.delete("/zk_test", -1);
                        }
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
            try {
                Thread.sleep(100000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

配置

關(guān)閉管理臺入口

編輯配置文件conf/zoo.cfg

admin.enableServer=false

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怎囚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子桥胞,更是在濱河造成了極大的恐慌恳守,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贩虾,死亡現(xiàn)場離奇詭異催烘,居然都是意外死亡,警方通過查閱死者的電腦和手機缎罢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門伊群,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人策精,你說我怎么就攤上這事舰始。” “怎么了蛮寂?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵蔽午,是天一觀的道長。 經(jīng)常有香客問我酬蹋,道長及老,這世上最難降的妖魔是什么抽莱? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮骄恶,結(jié)果婚禮上食铐,老公的妹妹穿的比我還像新娘。我一直安慰自己僧鲁,他們只是感情好虐呻,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寞秃,像睡著了一般斟叼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上春寿,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天朗涩,我揣著相機與錄音,去河邊找鬼绑改。 笑死谢床,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的厘线。 我是一名探鬼主播识腿,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼造壮!你這毒婦竟也來了渡讼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤费薄,失蹤者是張志新(化名)和其女友劉穎硝全,沒想到半個月后栖雾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楞抡,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年析藕,在試婚紗的時候發(fā)現(xiàn)自己被綠了召廷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡账胧,死狀恐怖竞慢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情治泥,我是刑警寧澤筹煮,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站居夹,受9級特大地震影響败潦,放射性物質(zhì)發(fā)生泄漏本冲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一劫扒、第九天 我趴在偏房一處隱蔽的房頂上張望檬洞。 院中可真熱鬧,春花似錦沟饥、人聲如沸添怔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽广料。三九已至,卻和暖如春幼驶,著一層夾襖步出監(jiān)牢的瞬間性昭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工县遣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糜颠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓萧求,卻偏偏與公主長得像其兴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夸政,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容