Zookeeper统一配置管理

合集下载

zookeeper集群工作原理

zookeeper集群工作原理

zookeeper集群工作原理Zookeeper集群工作原理Zookeeper是一个开源的分布式协调服务,它提供了一个高可用的、有序的、一致性的数据管理和协调服务。

在分布式系统中,Zookeeper集群起到了关键的作用,负责管理和维护分布式系统中的各种数据和状态。

一、Zookeeper集群的基本概念1. 服务器角色:Zookeeper集群中的每个节点都可以担任Leader 或Follower的角色。

Leader负责处理客户端请求和写操作,Follower则负责处理读操作和同步数据。

2. 数据模型:Zookeeper将数据存储在树形结构的命名空间中,类似于文件系统的目录结构,每个节点都有一个路径和一个关联的数据。

3. 会话:客户端与Zookeeper集群之间的连接被称为会话,会话可以保持一段时间,并且可以处理客户端请求。

二、Zookeeper集群的工作原理1. Leader选举:在Zookeeper集群中,只有一个节点可以担任Leader角色,其余节点为Follower。

当集群启动或Leader节点宕机时,会发起一次Leader选举。

选举过程通过ZAB协议(Zookeeper Atomic Broadcast)进行,节点首先互相通信,然后通过投票的方式选择出新的Leader节点。

2. 数据一致性:Zookeeper通过使用ZAB协议来实现数据的一致性。

当客户端向Leader节点发送写请求时,Leader节点将该请求转发给所有的Follower节点,一旦大多数Follower节点都返回成功响应,Leader节点就会将数据变更应用到自身的数据副本中,并通知Follower节点更新数据。

这样就保证了数据的一致性。

3. 数据同步:Zookeeper集群中的Follower节点会定期从Leader 节点同步数据,以保持数据的一致性。

Follower节点会向Leader 节点发送请求,获取最新的数据更新,然后更新到自身的数据副本中。

zookeeper、ZK安装、ZK配置、ZK使用

zookeeper、ZK安装、ZK配置、ZK使用

zookeeper、ZK安装、ZK配置、ZK使⽤-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介第⼆部分:zookeeper环境搭建 1、单机环境 2、集群环境第三部分:zookeeper基本使⽤ 1、java原⽣zk客户端api操作 2、zkClient客户端操作(推荐) 3、curator客户端操作(推荐)第四部分:zookeeper应⽤场景第五部分:zookeeper深⼊进阶第六部分:zookeeper源码分析-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介1、 zookeeper基本概念zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂并且容易出差错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并提供给⽤户⼀些简单的接⼝,zookeeper是⼀个典型的分布式⼀致性的解决⽅案(CP模式),分布式应⽤程序可以基于它实现数据订阅/发布、负载均衡,命名服务、集群管理、分布式锁和分布式队列等功能。

2、基本概念@1、集群⾓⾊通常在分布式系统中,构成⼀个集群中的每⼀台机器都有⾃⼰的⾓⾊,典型的是master/slave模式(主备模式),这种情况下能够处理写操作的机器成为master机器,把所有通过⼀步复制⽅式获取最新数据并且提供服务的机器为slave机器。

在zookeeper中没有是⽤主备模式,引⼊了Leader、Follower、Observer三种⾓⾊,在zk集群中所有的机器通过Leader选举来选Leader,Leader服务器为客户端提供读写服务,Follower和Observer都能提供读服务,唯⼀的区别是Observer不参与Leader选举,不参与写操作的过半写成功。

zookeeper用法

zookeeper用法

zookeeper用法ZooKeeper是一个开源的分布式应用程序的协调服务,它是一个树形目录服务,提供的功能包括配置管理、分布式锁、集群管理。

以下是ZooKeeper的使用方法:1. 启动ZooKeeper服务:可以通过执行命令sh bin/zkServer.sh start/status/stop/restart来启动、停止、查看ZooKeeper服务状态或重启ZooKeeper服务。

2. 客户端登陆:可以通过执行命令sh bin/zkCli.sh(远程登陆zkCli.sh -server IP:2181)来登录ZooKeeper客户端。

3. 命令行操作:在ZooKeeper客户端中,可以执行以下命令进行操作:* 显示根目录下、文件:ls / 使用ls命令来查看当前ZooKeeper中所包含的内容。

* 显示根目录下、文件:ls2 / 查看当前节点数据并能看到更新次数等数据。

* 创建文件,并设置初始内容:create /zk "test" 创建一个新的znode节点“ zk ”以及与它关联的字符串。

* 获取文件内容:get /zk 确认znode是否包含我们所创建的字符串。

* 修改文件内容:set /zk "zkbak" 对zk所关联的字符串进行设置。

* 删除文件:delete /zk 将刚才创建的文件删除。

4. 使用ZooKeeper的Java API:可以在Java程序中使用ZooKeeper API进行连接、操作和监控ZooKeeper服务器。

以下是使用ZooKeeper API的示例代码:```javaimport org.apache.zookeeper.*;public class ZKExample {public static void main(String[] args) throws Exception {// 创建ZooKeeper连接ZooKeeper zk = new ZooKeeper("localhost:2181", 5000, new Watcher() {@Overridepublic void process(WatchedEvent event) { System.out.println("Receive watched event:" + event);}});// 获取根目录下的所有节点List<String> nodes = zk.getChildren("/", false);System.out.println("Nodes under /: " +nodes);// 获取节点数据Stat stat = zk.exists("/test", false);if (stat != null) {System.out.println("Node /test exists, data: " + new String(zk.getData("/test", false, stat), "UTF-8"));} else {System.out.println("Node /test does not exist");}// 删除节点zk.delete("/test", stat.getVersion());// 关闭ZooKeeper连接zk.close();}}```以上示例代码演示了如何连接ZooKeeper服务器,获取根目录下的所有节点和节点数据,以及删除节点和关闭连接。

zk应用场景

zk应用场景

zk应用场景
Zookeeper(zk)是一个高性能的分布式协调服务,它可以用于各种分布式场景,包括但不限于以下几个方面:
1. 协调分布式应用:在分布式系统中,各个节点之间需要协调工作,Zookeeper 提供了一套原子操作,来实现分布式应用的协调和同步。

2. 统一配置管理:分布式系统中,各个节点的配置信息需要保持一致。

Zookeeper 提供了注册中心功能,可以统一管理配置信息,降低维护成本和出错概率。

3. 分布式锁:在多线程、多进程甚至多机器环境下,锁的管理非常困难。

Zookeeper 提供了分布式锁的实现,可以保证分布式环境下的数据安全性和可靠性。

4. 集群监控:Zookeeper本身就是一个分布式集群,因此它可以用来监控其它集群的状态,并根据其变化做出相应的处理。

5. 分布式队列:在分布式系统中,消息队列的使用非常广泛。

Zookeeper可以用来实现分布式队列,支持生产者、消费者模型,保证消息的可靠性和顺序性。

总之,Zookeeper可以应用于任何需要协调分布式系统的场景,是构建分布式系统的不可或缺的基础组件之一。

Zookeeper最典型的应用场景(理论+实战)

Zookeeper最典型的应用场景(理论+实战)

Zookeeper最典型的应⽤场景(理论+实战)1.前⾔之前⾃⼰写了⼀些关于Zookeeper的基础知识,Zookeeper作为⼀种协调分布式应⽤⾼性能的调度服务,实际的应⽤场景也⾮常的⼴泛,这⾥主要通过⼏个例⼦来具体的说明Zookeeper在特定场景下的使⽤⽅式(下⾯的这些功能估计consul和etcd也能实现,以后学到了再说吧)。

2.具体应⽤2.1.⼀致性配置管理我们在开发的时候,有时候需要获取⼀些公共的配置,⽐如数据库连接信息等,并且偶然可能需要更新配置。

如果我们的服务器有N多台的话,那修改起来会特别的⿇烦,并且还需要重新启动。

这⾥Zookeeper就可以很⽅便的实现类似的功能。

2.1.1.思路将公共的配置存放在Zookeeper的节点中应⽤程序可以连接到Zookeeper中并对Zookeeper中配置节点进⾏读取或者修改(对于写操作可以进⾏权限验证设置),下⾯是具体的流程图:2.1.2.事例数据库配置信息⼀致性的维护配置类:public class CommonConfig implements Serializable{// 数据库连接配置private String dbUrl;private String username;private String password;private String driverClass;public CommonConfig() {}public CommonConfig(String dbUrl, String username, String password, String driverClass) {super();this.dbUrl = dbUrl;ername = username;this.password = password;this.driverClass = driverClass;}public String getDbUrl() {return dbUrl;}public void setDbUrl(String dbUrl) {this.dbUrl = dbUrl;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getDriverClass() {return driverClass;}public void setDriverClass(String driverClass) {this.driverClass = driverClass;}@Overridepublic String toString() {return "CommonConfig:{dbUrl:" + this.dbUrl +", username:" + ername +", password:" + this.password +", driverClass:" + this.driverClass + "}";}}配置管理中⼼获取本地配置信息修改配置,并同步同步配置信息到Zookeeper服务器public class ZkConfigMng {private String nodePath = "/commConfig";private CommonConfig commonConfig;private ZkClient zkClient;public CommonConfig initConfig(CommonConfig commonConfig) {if(commonConfig == null) {monConfig = new CommonConfig("jdbc:mysql://127.0.0.1:3306/mydata?useUnicode=true&characterEncoding=utf-8", "root", "root", "com.mysql.jdbc.Driver");} else {monConfig = commonConfig;}return monConfig;}/*** 更新配置** @param commonConfig* @return*/public CommonConfig update(CommonConfig commonConfig) {if(commonConfig != null) {monConfig = commonConfig;}syncConfigToZookeeper();return monConfig;}public void syncConfigToZookeeper() {if(zkClient == null) {zkClient = new ZkClient("127.0.0.1:2181");}if(!zkClient.exists(nodePath)) {zkClient.createPersistent(nodePath);}zkClient.writeData(nodePath, commonConfig);}}以上是提供者,下⾯我们需要⼀个客户端获取这些配置public class ZkConfigClient implements Runnable {private String nodePath = "/commConfig";private CommonConfig commonConfig;@Overridepublic void run() {ZkClient zkClient = new ZkClient(new ZkConnection("127.0.0.1:2181", 5000));while (!zkClient.exists(nodePath)) {System.out.println("配置节点不存在!");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}}// 获取节点commonConfig = (CommonConfig)zkClient.readData(nodePath);System.out.println(commonConfig.toString());zkClient.subscribeDataChanges(nodePath, new IZkDataListener() {@Overridepublic void handleDataDeleted(String dataPath) throws Exception {if(dataPath.equals(nodePath)) {System.out.println("节点:" + dataPath + "被删除了!");}}@Overridepublic void handleDataChange(String dataPath, Object data) throws Exception {if(dataPath.equals(nodePath)) {System.out.println("节点:" + dataPath + ", 数据:" + data + " - 更新");commonConfig = (CommonConfig) data;}}});}}下⾯启动Main函数配置管理服务启动public static void main(String[] args) throws InterruptedException {SpringApplication.run(ZookeeperApiDemoApplication.class, args);ZkConfigMng zkConfigMng = new ZkConfigMng();zkConfigMng.initConfig(null);zkConfigMng.syncConfigToZookeeper();TimeUnit.SECONDS.sleep(10);// 修改值zkConfigMng.update(new CommonConfig("jdbc:mysql://192.168.1.122:3306/mydata?useUnicode=true&characterEncoding=utf-8","root", "wxh", "com.mysql.jdbc.Driver"));}}客户端启动:public static void main(String[] args) throws InterruptedException {SpringApplication.run(ZookeeperApiDemoApplication.class, args);ExecutorService executorService = Executors.newFixedThreadPool(3);// 模拟多个客户端获取配置executorService.submit(new ZkConfigClient());executorService.submit(new ZkConfigClient());executorService.submit(new ZkConfigClient());}}2.2.分布式锁在我们⽇常的开发中,如果是单个进程中对共享资源的访问,我们只需要⽤synchronized或者lock就能实现互斥操作。

大数据主要所学技术(简介)

大数据主要所学技术(简介)

大数据主要所学技术(简介)目录大数据主要所学技术简介:一:大数据技术生态体系二:各个技术栈简介一:大数据技术生态体系二:各个技术栈简介Hadoophadoop是一个用java实现的一个开源框架,是一种用于存储和分析大数据的软件平台,专为离线数据而设计的,不适用于提供实时计算。

对海量数据进行分布式计算。

Hadoop=HDFS(文件系统,数据存储相关技术)+ Mapreduce(数据处理)+ Yarn (运算资源调度系统)zookeeper对于大型分布式系统,它是一个可靠的协调系统。

提供功能:[本质是为客户保管数据,为客户提供数据监控服务]1. 统一命名服务:在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。

例如:一个域名下可能有多个服务器,服务器不同,但域名一样。

2. 统一配置管理:把集群统一配置文件交给zookeeper3. 统一集群管理:分布式环境中,实时掌握集群每个节点状态,zookeeper可以实现监控节点状态的变化。

4. 服务器动态上下线:客户端能实时洞察到服务器上下线变化。

5. 软负载均衡:在zookeeper中记录服务器访问数,让访问数最小的服务器去处理最新的客户端请求Hivehive是由facebook开源用于解决海量结构化日志的数据统计,是一个基于hadoop的数据库工具,可以将结构化数据映射成一张数据表,并提供类SQL的查询功能,本质是将SQL语句转化为MapReduce程序。

用hive的目的就是避免去写MapReduce,减少开发人员学习成本。

FlumeFlume是hadoop生态圈中的一个组件,主要应用于实时数据的流处理,是一个高可用,高可靠,分布式的海量日志采集,聚合和传输的系统。

支持多路径流量,多管道接入流量,多管道接出流量。

含有三个组件:•source 【收集】•channel 【聚集,一个通道,类似数据缓冲池】•sink 【输出】基础架构:Kafka分布式的基于发布/订阅模式的消息队列。

zookeeper 使用场景

zookeeper 使用场景
Zookeeper 是一个针对分布式应用程序的开源协调服务。

它提供了分布式应用程序的协作服务,包括配置维护、命名服务、分布式同步和分布式锁等功能。

Zookeeper 主要用于:
1. 分布式的配置管理,例如,多个节点需要共享配置文件时,可以使用 Zookeeper 实现配置文件的管理和更新,保证多个节点共享一份数据,并可快速更新和同步。

2. 命名服务,例如,多个节点需要根据名称访问同一资源时,可以使用 Zookeeper 实现统一的命名服务,使得每个节点都能够使用相同的名称访问该资源。

3. 分布式同步,例如,多个节点需要实现数据更新同步时,可以使用 Zookeeper 实现分布式的同步控制,以保证节点间数据的一致性。

4. 分布式锁,例如,多个节点需要对同一资源进行加锁时,可以使用 Zookeeper 实现分布式的锁控制,以保证节点之间对该资源的访问不会产生冲突。

综上所述,Zookeeper 可以帮助开发人员轻松实现分布式应用程序的一些关键功能,例如配置管理、同步和锁定等,从而提升应用程序的可靠性和可扩展性。

zk监听原理

zk监听原理ZooKeeper是一个让你构建分布式应用的开源框架。

它的作用是在分布式应用中提供协调服务,包括统一的配置管理、命名服务、分布式锁的协调、对集群状态的监控等等。

ZooKeeper的核心思想是将数据存储在一个树形结构中。

每个节点都有一个ACL (Access Control List)权限控制列表,用于控制哪些节点可以访问该节点的数据。

同时,ZooKeeper采用了基于事务的方式来确保数据一致性。

当一个节点的数据发生变化时,ZooKeeper会自动通知所有监听该节点的客户端。

这个通知机制是ZooKeeper的核心机制,也是实现分布式协调的重要手段之一。

ZooKeeper的监听原理可以分为两部分来讲解:客户端监听和服务端监听。

客户端监听客户端监听是指客户端通过调用ZooKeeper API来注册节点监听器,以便在节点数据发生变化时得到通知。

在ZooKeeper中,节点数据的变化分为三种类型:节点创建、节点删除、节点数据变化。

在注册节点监听器时,可以指定所监听的类型,也可以监听所有变化类型。

客户端注册监听器的一般流程如下:1. 调用ZooKeeper API注册一个Watcher对象,用于接收节点数据变化通知;2. 调用ZooKeeper API获取节点的数据,并设置Watcher对象;3. 当节点数据发生变化时,ZooKeeper会通知所有监听该节点的Watcher对象。

客户端收到通知后,重新获取节点数据,并再次注册Watcher对象,以实现对节点的持续监听。

服务端监听除了客户端监听外,ZooKeeper还提供了服务端监听机制。

服务端监听指的是ZooKeeper集群中的任一节点在数据发生变化时,都可以通知其他所有节点,以确保数据的一致性和可靠性。

在ZooKeeper中,服务端监听的实现原理是基于ZAB(ZooKeeper Atomic Broadcast)协议。

ZAB协议是ZooKeeper集群中用于数据同步和一致性的协议。

双活数据中心技术架构ppt课件

hadoop、mpp 等的双活机制
1、应用写两份方式实现双活2、跨中心集群方式
大数据
虚拟化平台的跨 中心双活(迁移)
1、跨中心虚拟机集群,可平滑迁移2、每个中心一套集群,通过接入层构 建负载均衡实现双活
于资源池
模式1、相互独立的双集群
在每个中心部署独立的云化应 用集群1、如Web类应用可通过接入层和负载均衡实现双活访问,2、如hadoop或MPP集群应用可 通过上层应用实现双集群数据 同步,从而实现双活。
数据层双活三种方式
Active-Standby方式:基于Oracle ADG技术,采用从 主库向备库传输redo日志方式,备库恢复数据过程可 以用只读方式打开进行查询操作,实现了部分双活功 能,在主节点故障后可以将备节点切为Active-Active方式:通过Oracle Extend RAC实现多 个集群节点同时对外提供业务访问。该方式做到故障无缝切换,提升应用系统整体性能。数据逻辑复制软件方式:通过实时抽取在线日志中的数据变化信息,然后通过网络将变化信息投递到目标端, 最后在目标端还原数据,从而实现源和目标的数据同步。
要点(ASM):两个数据中心分别部署一套存储,各提供一套LUN设备给全部数据 库主机。存储的SAN网络和RAC心跳网络需使用低延迟、高带宽的DWDM光 纤链路。配置ASM磁盘组。每个磁盘组配置两个失效组,每个失效组对应来 自一套存储的LUN设备。在第三个站点部署用亍RAC的第3个投票盘,使用NFS的方式挂载到 所有数据库主机。不管理普通的RAC系统类似,需要重点加强对站点间光纤链路情况 的监控与应急。
RPO=0
支持
较好 RTO=0
不支持
较低
组网简单,维护方 便,但技术较新, 实用经验少
基亍存储HA机制

zookeeper是什么、做什么用

zookeeper是什么、做什么⽤⼀、什么是zookeeper ZooKeeper是⼀个分布式的,开放源码的分布式应⽤程序协调服务,是Google的Chubby⼀个开源的实现,是Hadoop和Hbase的重要组件。

它是⼀个为分布式应⽤提供⼀致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

简单来说,zookeeper = ⽂件系统 + 监听通知机制⼆、⽂件系统 zookeeper有着与linux类似的⽂件系统,区别是,linux的⽬录就是⽬录,⽂件就是⽂件。

⽽zookeeper中只有⼀个znode概念,本⾝可以做为“⽂件”存储⼀定的数据,⼜可以做为“⽬录”存在。

/*+---+|/ |+-+-+|| +------++--|config|| +--+---+| | +-----+| +-----|ip || | +-----+| | +-----+| +-----|port || +-----+|| +------++--|apps |+--+---+| +-----++-----|app1 || +-----+| +-----++-----|app2 |+-----+*/ znode共分为四种: 1、PERSISTENT-持久化⽬录节点 此节点在客户端与zookeeper断开连接之后,依然存在,需要主动删除。

2、PERSISTENT_SEQUENTIAL-持久化顺序编号⽬录节点 同样地,此类节点也是需要主动删除,不会随着客户端的断开连接⽽删除。

与PERSISTENT不同的是,zookeeper会给此类节点进⾏编号。

如:app0000003362。

0000003362为zookeeper给的编号,⾃动递增。

由于此编号是⼀个有符号整形(4字节),当它超过2147483647时,将会溢出。

3、EPHEMERAL-临时⽬录节点 与PERSISTENT不同的是,此类节点会在客户端与zookeeper断开连接之后被删除。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Disconf介绍
模块信息
客户端 • disconf-core: 分布式配置基础包模块。 • disconf-client: 分布式配置客户端模块, 依赖disconf-core包。 用户程序使 用它作为Jar包进行分布式配置编程。 • disconf-tool: 分布式配置工具包,依赖disconf-core包, 目前使用不多,建 议不使用。 管理端 • disconf-web是统一的分布式配置管理平台。disconf-web: 分布式配置平 台服务模块, 依赖disconf-core包。采用SpringMvc+纯HTML方式(前后端 分离架构)实现。用户使用它来进行日常的分布式配置管理。
Zookeeper配置管理
Zookeeper配置管理
优势
• 简单。配置统一管理,方便运维;用户只要修改配置,无需进行其他任 何操作,配置自动生效。 • 可靠。ZooKeeper 服务集群具有无单点失效的特性 ,使整个系统更加 可靠,即使ZooKeeper 集群中的一台机器失效,也不会影响整体服务, 更不会影响分布式应用配置信息的更新。 • 实时。ZooKeeper的数据更新通知机制,可以在数据发生变化后,立即 通知给分布式应用程序,具有很强的变化响应能力。
劣势
• 最终一致性。配置的更新并不能做到强一致性,因为网络延迟等原因 ,只能做到最终一致性。
Disconf介绍
简介
Disconf(Distributed Configuration Management Platform )是百 度前端技术部研发的基于Zookeeper的分布式配置管理平台,它是专注于各 种系统的配置管理的通用组件/通用平台。 使用Disconf,可以对所有业务系统的配置进行统一管理,远程对配置进 行动态更新,免去重复发布的各种问题。 目前项目放在github上,并开放源代码。
Zookeeper部署和使用
3、分别修改配置文件 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/xxx/zk1 clientPort=2181 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890 4、启动集群 bin/zkServer.sh start zk1.cfg bin/zkServer.sh start zk2.cfg bin/zkServer.sh start zk3.cfg来自Zookeeper介绍
一致性保证
ZooKeeper是一个高性能,可扩展的服务。读和写操作都非常快速。之所 以如此,全因为zookeeper有数据一致性的保证: • 顺序一致性:按照客户端发送请求的顺序更新数据。 • 原子性:更新要么成功,要么失败,不会出现部分更新。 • 单一性 :无论客户端连接哪个server,都会看到同一个视图。 • 可靠性:一旦数据更新成功,将一直保持,直到新的更新。 • 及时性:客户端会在一个确定的时间内得到最新的数据。
Zookeeper介绍
分布式锁 • Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每 个节点的数据都是相同的。一个用户创建一个节点作为锁,另一个用户 检测该节点,如果存在,代表别的用户已经锁住,如果不存在,则可以 创建一个节点,代表拥有一个锁。 集群管理 • 每个加入集群的机器都创建一个节点,写入自己的状态。监控父节点的 用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用 户同样会收到通知。(zookeeper还有临时节点的概念,这些节点的生 命周期依赖于创建它们的session是否活跃。session结束时节点即被销 毁。也由于这种特性,临时节点不允许有子节点。)
Zookeeper部署和使用
客户端的使用
ZooKeeper的命令行操作 • bin/zkCli.sh -server 127.0.0.1:2181 • 查看/目录内容 ls / • 创建一个znode节点 created /node、 • 查看/node的数据信息 get /node • 修改数据 set /node xxxxx • 删除节点 delete /node • 退出客户端连接 quit
Zookeeper介绍
运用场景
数据发布与订阅 • 应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个 watcher,每次配置更新都会通知到应用。 命名空间服务 • 分布式命名服务,创建一个节点后,节点的路径就是全局唯一的,可 以作为全局名称使用。 分布式通知/协调 • 不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到 通知。
Zookeeper介绍
Zookeeper总体结构
Z o o ke e p e r 服 务 自 身 组 成 一 个 集 群 ( 2 n + 1 个 服 务 允 许 n 个 失 效 ) 。 Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下 的是 follower ,提供读服务, leader 失效后会在follower 中重新选举新的 leader。 • 客户端可以连接到每个 server,每个server的数 据完全相同。 • 每个follower都和leader 有连接,接受leader的数 据更新操作。 • Server记录事务日志和快 照到持久存储。 • 大多数server可用,整体 服务就可用。
Zookeeper部署和使用
3、启动zookeeper • bin/zkServer.sh • 查看运行状态bin/zkServer.sh status JMX enabled by default Using config:/home/xxx/zookeeper-3.4.7/conf/zoo.cfg Mode: standalone 4、停止zookeeper • bin/zkServer.sh stop
Zookeeper部署和使用
Zookeeper的java客户端操作 • Zookeeper提供了java的开发包,客户端要连接 Zookeeper 服务器可以 通过创建 org.apache.zookeeper. ZooKeeper 的一个实例对象,然后调 用这个类提供的接口来和服务器交互。 • 创建一个与服务器的连接ZooKeeper(String connectString,int sessionTimeout,Watcher watcher) • 创建节点String create(String path, byte[] data, List<ACL> acl, CreateMode createMode) • 判断是否存在节点Stat exists(String path, boolean watch) • 删除节点void delete(String path, int version) • 设置节点数据Stat setData(String path, byte[] data, int version)
20
Disconf介绍
重要功能特点
支持配置(配置项+配置文件)的分布式化管理 配置发布统一化 •配置发布、更新统一化(云端存储、发布) :配置存储在云端系统,用户统 一在平台上进行发布、更新配置。 •配置更新自动化:用户在平台更新配置,使用该配置的系统会自动发现该情 况,并应用新配置。特殊地,如果用户为此配置定义了回调函数类,则此函 数类会被自动调用。 极简、低侵入的使用方式 •支持Spring方式编程 •支持注解式编程,极简、低侵入的使用方式:通过简单的标注和极简单的代 码撰写,即可完成复杂的配置分布式化。
Zookeeper部署和使用
zookeeper伪分布式集群安装
所谓伪分布式集群,就是在,在一台PC中,启动多个ZooKeeper的实 例。“完全分布式集群” 是每台PC,启动一个ZooKeeper实例。这里在一 台PC中,启动3个ZooKeeper的实例。 1、创建环境目录 • mkdir /home/xxx/zk1 mkdir /home/xxx/zk2 mkdir /home/xxx/zk3 • 并在三个目录下新建myid文件,分别为“1”、“2”、“3”。 2、添加配置文件 • 在conf目录下新建3个cfg文件,分别为zk1.cfg、zk2.cfg、zk3.cfg
Zookeeper统一配置管理
杨旆
概述
• • • • •
Zookeeper的介绍与部署使用 Zo管理的细节讨论 示例程序的演示
Zookeeper介绍
简介
Apache Zookeeper是一个开放源代码的分布式协调服务,由知名互联网 公司雅虎创建,是Google Chubby的开源实现,由Apache Hadoop的子项 目发展而来,与2010年11月从Hadoop项目中分离,正式成为Apache的顶 级项目。Zookeeper为分布式应用提供了高效且可靠的分布式协调服务,提 供了诸如数据发布/订阅、负载均衡、分布式协调/通知、集群管理、统一命 名服务、分布式锁和分布式队列等分布式的基础服务。Zookeeper的设计目 标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可 靠的原语集,并以一系列简单易用的接口提供给用户使用。
Zookeeper配置管理
简介
配置管理在某些场合称“数据发布与订阅”,顾名思义就是将数据发布到 Zookeeper节点上,供订阅者动态获取数据,实现配置信息的集中式管理和 动态更新。例如全局的配置信息,地址列表等就非常适合使用。
场景描述
配置的管理在分布式应用环境中很常见,一个带配置的服务程序,部署在 若干台机器上,如果配置发生了变化,接下去要进行的操作是停止所有机器 上的该程序,修改每一台机器上该程序对应的配置文件。这个情景会有两个 问题:第一,机器多了,逐个修改配置是一件不合理的运维;第二,配置一 般是程序启动时读入的,所以配置修改后,程序应该重启。
相关文档
最新文档