Apache Curator is a Java/JVM client library for Apache ZooKeeper, a distributed coordination service. http://curator.apache.org
Apache Curator是用于Apache ZooKeeper(一种分布式协调服务)的Java / JVM客户端库。
在这之前,作为一条舒适区咸鱼的我来说,真的是完全没有听说过 Curator 这个东西😭。
同样是 Apache 大家庭的成员 —— Zookeeper 却经常能在各大技术论坛中找到它的身影。
用一句话来介绍 Zookeeper:它是一个开源的高度可靠的分布式协调的开源服务器。
Curator 基础
Maven 依赖
Curator 实战
创建会话
private static CuratorFramework getZkClient() {
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 5);
CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()
.connectString("127.0.0.1:2181")
.retryPolicy(retryPolicy)
.build();
curatorFramework.start();
return curatorFramework;
}
创建数据节点
private static Set<String> registeredPathSet = ConcurrentHashMap.newKeySet();
public static void createPersistentNode(String path) {
try {
if (registeredPathSet.contains(path) || getZkClient().checkExists().forPath(path) != null) {
System.out.println(String.format("节点已经存在,节点为:[{}]", path));
} else {
getZkClient().create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath(path);
System.out.println(String.format("节点创建成功,节点为:[{}]", path));
}
registeredPathSet.add(path);
} catch (Exception e) {
e.printStackTrace();
}
}
删除数据节点
public static void removeChildrenNodes(String path) {
try {
getZkClient()
.delete()
.deletingChildrenIfNeeded()
.forPath(path);
} catch (Exception e) {
e.printStackTrace();
}
}
读取数据节点
public static List<String> getChildrenNodes(String path) {
List<String> result = null;
try {
result = getZkClient().getChildren().forPath(path);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
Zookeeper 数据格式
[zk: 127.0.0.1:2181(CONNECTED) 3] get /my-rpc
cZxid = 0x25 # 节点分配的Id
ctime = Sun Jun 14 08:24:47 UTC 2020 # 节点创建时间
mZxid = 0x25 # 修改后的id
mtime = Sun Jun 14 08:24:47 UTC 2020 # 修改时间
pZxid = 0x26 # 子节点id
cversion = 1 # 子节点的version
dataVersion = 0 # 当前节点数据的版本号
aclVersion = 0 # 权限Version
ephemeralOwner = 0x0 # 临时基节点ID编号,持久节点的id为0
dataLength = 0 # 数据长度
numChildren = 1 # 子节点个数
小结
写到这里,The Last of Us: Part II 好像下载完成了
。