/,節點稱 znode,數據存內存,高吞吐低延遲。ls / # 列出根節點
create /node "data" # 創建持久節點
get /node # 獲取數據及元數據
set /node "new data" # 更新數據
delete /node # 刪除節點
ZooKeeper zk = new ZooKeeper("192.168.2.129:2181", 2000, event -> {
// Watcher 回調
zk.getData("/node", true, null); // 重新註冊 watch
});
// 創建節點
zk.create("/conf", null, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/conf/web.xml", data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// 讀取/更新/刪除/獲取子節點
byte[] data = zk.getData("/node", true, null);
zk.setData("/node", newData, -1);
List<String> children = zk.getChildren("/node", true);
zk.delete("/node", -1);
注意: 順序節點創建後路徑自動追加序號,操作時需帶上完整路徑(如 /node/testNode0000000001)。
| 服務器 | IP | clientPort | peerPort | electionPort |
|---|---|---|---|---|
| 1 | 192.168.2.127 | 2181 | 2881 | 3881 |
| 2 | 192.168.2.128 | 2182 | 2882 | 3882 |
| 3 | 192.168.2.130 | 2183 | 2883 | 3883 |
data/logs 目錄。zoo.cfg:dataDir、dataLogDir、clientPort、server.1=IP:2881:3881 等。data 目錄創建 myid 文件,內容為節點編號 (1/2/3)。zkServer.sh start,status 確認一 Leader 兩 Follower。dubbo.registry.address=zookeeper://192.168.2.127:2181?backup=192.168.2.128:2182,192.168.2.130:2183
測試:停止節點 128,客戶端自動切換至 127;再停 127,集群不可用(過半節點失效)。驗證「過半節點正常即服務可用」特性。


