zookeeper单机、集群安装、zoo配置详解

zookeeper是什么

zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于google chubby。是分布式数据一致性的解决方案。

zookeeper的特性

顺序一致性

从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中

原子性

所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、

要么全都不应用

可靠性

一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的

 实时性

一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)

单机环境安装

1.下载zookeeper的安装包
http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.8.tar.gz
2.解压zookeeper 
tar -zxvf zookeeper-3.4.8.tar.gz
3.cd 到 zookeeper-3.4.8/conf
mv  zoo_sample.cfg  zoo.cfg
4./zkServer.sh start启动zookeeper
5.sh zkCli.sh 客户端链接到zookeeper上

集群环境

zookeeper集群, 包含三种角色: leader / follower /observer
leader:一个zookeeper 集群 只有一个leader,类似master/slave模式,客户端提交请求之后,先发送到leader,leader作为接收者,广播到每个server,在folloer上创建:也会同步到leader ,一个节点上的数据发生变化后,通知其他节点。
observer: Observer机器不参与选举,也不参与写操作的“过半写成功”策略,因此Observe可以在不影响写性能的情况下提升集群的读性能。

zoo.cfg里面增加

server.1=192.168.1.41:2888:3888
server.2=192.168.1.45:2888:3888
server.3=192.168.1.46:2888:3888

server.id=host:port:port
id的取值范围: 1~255; 用id来标识该机器在集群中的机器序号
2888是zookeeper集群之间通信的端口
3888表示leader选举的端口

把zk节点制定为observer

peerType=observer
server.3=192.168.1.46:2888:3888:observer


data存储路径为:dataDir=/home/admin/zookeeper-3.4.8/tmp,计入tmp目录,创建myid,文件就一行数据,数据内容是每台机器对应的server ID的数字。

安装完毕!

zoo.cfg配置文件分析

tickTime=2000  zookeeper中最小的时间单位长度 ms)

 

initLimit=10  follower节点启动后与leader节点完成数据同步的时间,10*2000(20秒)

 

syncLimit=5 leader节点和follower节点进行心跳检测的最大延时时间,5*2000(5秒)

 

dataDir=/tmp/zookeeper  表示zookeeper服务器存储快照文件的目录

 

dataLogDir 表示配置 zookeeper事务日志的存储路径,默认指定在dataDir目录下

 

clientPort 表示客户端和服务端建立连接的端口号: 2181

zookeeper的命令操作

1. create [-s] [-e] path data acl

-s 表示节点是否有序

-e 表示是否为临时节点

默认情况下,是持久化节点

create /test 123      创建名字为test的持久化节点 并赋值123

create -e /test 123  创建名字为test临时节点 并赋值123(临时节点,客户端断开将会被删除)

2. get path [watch]

获得指定 path的信息,返回一个stat

 get /test

3.set path data [version]

修改节点 path对应的data

乐观锁的概念

数据库里面有一个 version 字段去控制数据行的版本号

set /test 234

4.delete path [version]

删除节点

delete /test (如有子节点 需先删除子节点)

stat信息

cversion = 0       子节点的版本号

aclVersion = 0     表示acl的版本号,修改节点权限

dataVersion = 1    表示的是当前节点数据的版本号

 

czxid    节点被创建时的事务ID

mzxid   节点最后一次被更新的事务ID

pzxid    当前节点下的子节点最后一次被修改时的事务ID

 

ctime = Sat Aug 05 20:48:26 CST 2017

mtime = Sat Aug 05 20:48:50 CST 2017





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值