分布式协调服务Zookeeper
2017-08-02 15:02
330 查看
一.ZooKeeper概述
1.zookeeper是一个为用户的分布式应用程序提供协调的服务。
·是为别的分布式程序服务的
·本身也是一个分布式程序(只要半数以上节点存储,就能正常提供服务)
2.目标是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户
3.Hadoop生态系统中许多框架使用了Zookeeper,例如:HDFS HA、HBase、Kafka、Spark
二.ZooKeeper架构
1.核心组件
·Server:数目一般为奇数
·Leader
·Follower
·Client
三.ZooKeeper数据结构
层次化的目录结构
每个节点在ZK中叫做znode
znode可以包含数据和子节点(EPHEMERAL类型的节点不能有子节点)
znode中的数据可以有多个版本,可以通过版本查询数据
znode有两种类型
短暂的:ephemeral
持久的:persistent
znode的类型在创建时确定后就不能修改
四.创建、删除zk节点
1.zookeeper是一个为用户的分布式应用程序提供协调的服务。
·是为别的分布式程序服务的
·本身也是一个分布式程序(只要半数以上节点存储,就能正常提供服务)
2.目标是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户
3.Hadoop生态系统中许多框架使用了Zookeeper,例如:HDFS HA、HBase、Kafka、Spark
二.ZooKeeper架构
1.核心组件
·Server:数目一般为奇数
·Leader
·Follower
·Client
三.ZooKeeper数据结构
层次化的目录结构
每个节点在ZK中叫做znode
znode可以包含数据和子节点(EPHEMERAL类型的节点不能有子节点)
znode中的数据可以有多个版本,可以通过版本查询数据
znode有两种类型
短暂的:ephemeral
持久的:persistent
znode的类型在创建时确定后就不能修改
四.创建、删除zk节点
import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.ZooKeeper; public class ZkTest { public static void main(String[] args) throws Exception { // 创建一个与服务器的连接 ZooKeeper zk = new ZooKeeper("node3", 3000, new Watcher() { // 监控所有被触发的事件 public void process(WatchedEvent event) { System.out.println("已经触发了" + event.getType() + "事件" + event.getPath()); } }); // 创建一个目录节点 zk.create("/testPath", "testData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(new String(zk.getData("/testPath", false, null))); // 创建一个子目录节点 zk.create("/testPath/testChildPathOne", "testChildDataOne".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(new String(zk.getData("/testPath/testChildPathOne", true, null))); // 取出子目录节点列表 System.out.println(zk.getChildren("/testPath", true)); // 修改子目录节点数据 zk.setData("/testRootPath/testChildPathOne", "modifyChildDataOne".getBytes(), -1); System.out.println(new String(zk.getData("/testPath/testChildPathOne", false, null))); System.out.println("目录节点状态:[" + zk.exists("/testPath", true) + "]"); // 创建另外一个子目录节点 zk.create("/testPath/testChildPathTwo", "testChildDataTwo".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(new String(zk.getData("/testPath/testChildPathTwo", false, null))); // 删除子目录节点 zk.delete("/testPath/testChildPathTwo", -1); zk.delete("/testPath/testChildPathOne", -1); // 删除父目录节点 zk.delete("/testPath", -1); // 关闭连接 zk.close(); } }
相关文章推荐
- 集群与负载均衡技术学习笔记二 分布式应用程序协调服务zookeeper
- 知识链-分布式协调服务zookeeper
- 分布式协调服务zookeeper-集群安装
- 中小型研发团队架构实践八:分布式协调服务ZooKeeper
- Zookeeper分布式协调服务
- 分布式协调服务ZooKeeper的典型应用
- 浅谈分布式服务协调技术 Zookeeper
- Zookeeper (分布式协调服务) 基础概念
- zookeeper分布式协调服务的使用一
- 一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务
- 分布式协调服务---Zookeeper
- 分布式协调服务zookeeper01-zookeeper集群安装部署
- hadoop之 Zookeeper 分布式应用程序协调服务
- hadoop之 Zookeeper 分布式应用程序协调服务
- 分布式协调服务ZooKeeper工作原理
- 分布式应用程序协调服务Zookeeper
- Zookeeper: 一个分布式应用程序协调服务
- 分布式配置服务etcd VS 分布式协调服务zookeeper
- Component 分布式协调服务 - Zookeeper
- 分布式协调服务---Zookeeper