zookeeper使用(一)--简介与安装

一、简介

zookeeper最初是apache hadoop的子项目,2010年11月后正式成为apache的顶级项目。它是一个分布式协调框架,

通常用在分布式环境中。

1、分布式理论

在分布式环境中,数据是分布在多台机器上的,传统的在一台机器上实现的事务,

在分布式环境行不通(机器随时变动的、各机器副本无主从关系,缺乏全局时钟,无法确认事件发生的先后)。

进而,出现了分布式理论:

a)cap理论,即一致性(consistency)、可用性(availability)、分区容错性(partition tolerance)。上述三项中,

最多满足两项,分区容错性是必须(因为是分布式系统),因此在一致性与可用性间找平衡。

a)base理论,基本可用(basically available,在响应时间等妥协)、软状态(soft state,即允许存在中间状态)、

最终一致性(eventually consistent,数据最终是一致),base是对cap理论在实际应用中权衡的结果。

2、实现

zookeeper是基于zab协议(类似还有paxos算法)实现的,zab协议是一种通用的分布式一致算法,

是为zookeeper专门设计的一种支持崩溃恢复的原子广播协议。

在zookeeper中,主要依赖zab协议实现分布式数据的一致性,实现主备模式系统中,保持集群中各副本之前的数据一致性。

简单地说,类似于二阶段提交,集群中,由leader处理所有事务,leader将用户请求转事务,广播给其它机器,

当过半机器正常反馈后,就广播提交操作。当leader机器崩溃时,会通过过半选择重新选举leader。

3、应用

zookeeper是为分布式应用提供分布式协调服务。也就是说,

它是一个分布式数据一致性的解决方案,分布式应用程序可基于它,实现数据发布/订阅、负载均衡、

命名服务、分布式协调/通知、集群管理、master选举、分布式锁与分布式队列等功能。

4、核心名词

a)集群角色,分为leader(选举产生,提供读写服务)、follower(提供读服务,参与选举)、observer(提供读服务,不参与选举);

b)数据节点,分为机器节点(集群中的机器)、数据节点(即znode,存储数据);

c)会话,即客户端与服务器的一个tcp长连接,通过心跳检测保持会话。

5、存储

zookeeper中的所有数据均存储在内存中,数据结构是一棵树(znode tree),路径由/做分隔,每个znode存储自己的数据内容,

同进还会存储相关属性。数据节点(znode)又分持久节点和临时节点,持久节点即znode一旦创建,就会一直存在,除非进行

删除操作,临时节点的生命周期与客户端会话绑定,一旦会话失效,则这个客户端创建的节点也会被移除。

二、安装

zookeeper的安装很简单,在此以安装单台机器为例,集群中类似。

1、下载并解压

下载zookeeper-3.4.9.tar.gz,下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

2、配置

在目录zookeeper-3.4.9\zookeeper-3.4.9\conf下,复制zoo_sample.cfg到zoo.cfg,打开zoo.cfg文件,并配置参数:

a)dataDir ,数据目录;

b)dataLogDir ,日志目录;

c)clientPort ,监听客户端连接的端口,默认值是2181;

d)tickTime ,zookeeper中的时间单位,单位为毫秒,默认值为2000;

e)initLimit ,leader与follower最长心跳时间,单位是timeTime,默认值是10,即2000毫秒*10=20000毫秒=20秒。

f)syncLimit ,客户端等待服务器应答时间,单位是timeTime,默认值是5,即2000毫秒*5=10000毫秒=10秒。

g)server.id=host:portA:portB ,在集群中,每台机器需要知道整个集群是由哪些机器构成,在此可按给出格式配置,

每行代表一台机器。

其中,id称为server id,标记该机器在集群中的机器序号。

host表示server所在地址, portA表示server与leader交换信息的端口,portB表示选举leader所用的端口;

详情如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=../data
dataLogDir=../log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=127.0.0.1:3000:4000

3、标识当前机器id

在步骤2中的数据目录(dataDir)下,新建文件myid,填入数字(如1),表示是第几个server。

三、使用

1、启动服务

在bin目录下,运行命令./zkServer.sh start

2、连接服务

在bin目录下,运行命令./zkCli.sh -server 127.0.0.1:2181


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值