Zookeeper入门(一)使用场景与环境搭建

(一)概述

Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

Zookeeper的核心类似一个精简的文件系统,提供一些简单的操作和一些附加的抽象(如znode的排序和watch),并且集群的部署方式使其具有高可靠性。Zookeeper的协作过程简化了松散耦合系统之间的交互,即使参与者彼此不知道对方的存在,也能互相发现并且完成交互。

核心:Zookeeper=文件系统+通知机制

(二)应用场景

Zookeeper提供的功能包括:分布式消息同步和协调机制、服务器节点动态上下线、统一

配置管理、负载均衡及集群管理等。

典型应用场景一:数据发布与订阅

典型应用场景二:集群管理

典型应用场景三:负载均衡

    在work server启动时先在zookeeper的servers节点下创建临时节点进行注册,client 在zookeeper的servers节点中设置监听器,可以及时获取到最新的服务器列表,于是可以按照某种策略选取某一台服务器,与之通信,完成软负载均衡。

(三)zookeeper本地模式安装

   第一步:将zookeeper安装包上传到linux系统,解压tar -zxvf  zookeeper-3.4.10.tar.gz
   第二步:重命名conf中的zoo_sample.cfg为zoo.cfg,在zookeeper目录下创建data/zkData文件夹(mkdir -p data/zkData),指定zoo.cfg中dataDir数据存放路径:dataDir=/opt/module/zookeeper-3.4.10/data/zkData
   第三步:本地启动  : [liuzhoujian@hadoop102 zookeeper-3.4.10]$  bin/zkServer.sh start
                 查看启动状态: [liuzhoujian@hadoop102 zookeeper-3.4.10]$  bin/zkServer.sh status
                 停止zookeeper:[liuzhoujian@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh stop

     启动zookeeper客户端:[liuzhoujian@hadoop102 zookeeper-3.4.10]$ bin/zkCli.sh

     退出zookeeper客户端:[zk: localhost:2181(CONNECTED) 0] quit

(四)Zookeeper集群模式安装

Zookeeper是可以集群复制的,集群间通过Zab(Zookeeper Atomic Broadcast)协议保证数据的一致性。

前提准备:准备三台linux虚拟机,hadoop102、hadoop103、hadoop104,在上面安装java环境(过程省略)

 第一步:将zookeeper安装包上传到linux系统,解压tar -zxvf  zookeeper-3.4.10.tar.gz

 第二步:重命名conf中的zoo_sample.cfg为zoo.cfg,在zookeeper目录下创建data/zkData文件夹(mkdir -p data/zkData),指定zoo.cf中dataDir数据存放路径:dataDir=/opt/module/zookeeper-3.4.10/data/zkData

再在zoo.cfg中添加集群配置信息:

server.1=hadoop102:2888:3888 
server.2=hadoop103:2888:3888
server.3=hadoop104:2888:3888

server.A=B:C:D          A:服务器的编号  B标识IP地址,C:用于leader和follower的通信端口 D:用于选举机制的通信端口

第三步:在data/zkData目录下简历myid(touch myid), 再在里面设置服务器的编号,1号服务对应server.1中的1,在myid中设置1,2号服务器则在myid中设置2。

可以在其他虚拟机中都执行一下这些操作,也可以采用scp命令直接复制过去,进行修改。

第三步:启动zookeeper集群。

[root@hadoop2 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop3 zookeeper-3.4.10]# bin/zkServer.sh start

[root@hadoop4 zookeeper-3.4.10]# bin/zkServer.sh start

第四步:查看状态

[root@hadoop2 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

[root@hadoop3 zookeeper-3.4.10]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: leader

[root@hadoop4 zookeeper-3.4.5]# bin/zkServer.sh status

JMX enabled by default

Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg

Mode: follower

(五)数据结构与节点类型

 zookeeper数据模型类似于节点树,每一个节点称为“znode”,每个znode默认存储1M数据,每个znode都可以通过其路径唯一标识。

znode的节点分为四种类型:

Zookeeper节点类型
节点类型解释
PERSISTENT持久节点,该节点客户端断开连接后不会删除
EPHEMERAL临时节点,该节点将在客户端断开连接后删除
PERSISTENT_SEQUENTIAL持久化顺序节点,该节点在客户端断开连接后不会删除,并将在其名下附加一个单调递增数
EPHEMERAL_SEQUENTIAL临时顺序节点,该节点在客户端断开连接会删除,并将在其名下附加一个单调递增数

(六)zookeeper集群的特点

(1)Zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群。

(2)Leader负责进行投票的发起和决议,更新系统状态

(3)Follower用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票

(4)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。

(5)全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的。

(6)更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行。

(7)数据更新原子性,一次数据更新要么成功,要么失败。

(8)实时性,在一定时间范围内,client能读到最新数据。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值