赞
踩
初步认识zookeeper
zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于google chubby。基于google chubby的开源实现。Zookeeper的设计目的是将那些复杂且容易出错的分布式一致性服务封装起来。
zookeeper 是什么
分布式数据一致性解决方案
zookeeper 解决的问题
作为一种中间件去解决资源共享的问题,如下:
协议地址维护
负载均衡机制
服务动态上下感知
zookeeper 能做什么
数据的发布/订阅(配置中心:disconf)、负载均衡(dubbo利用了zookeeper机制实现负载均衡)、命名服务、
master选举(kafka、hadoop、hbase)、分布式队列、分布式锁
zookeeper 数据结构
zookeeper 的特性
从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
所有的事务请求处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、要么全都不应用。
一旦服务器成功应用了某一事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内、近实时)
zookeeper 节点特性
大多数时候,我们对zookeeper的操作都是在对节点进行增、删、改、查
zookeeper 核心zoo.cfg配置文件
zookeeper安装
单机环境安装
1、下载zookeeper安装包
http://archive.apache.org/dist/zookeeper/stable/
2、解压zookeeper
tar -zxvf zookeeper-3.4.10.tar.gz
3、cd 到ZK_HOME/conf,copy一份zoo.cfg cp zoo_sample.cfg zoo.cfg
4、sh zkServer.sh
{start|start-foreground|stop|restart|status|upgrade|print-cmd}
启动命令
sh zkServer.sh start
5、sh zkCli.sh -server ip:port
客户端连接
zookeeper连接
sh zkCli.sh -server localhost:2181
退出
./zkServer.sh stop
创建节点指令
create [-s] [-e] path data acl
-s 表示节点是否有序
-e 表示是否为临时节点
默认情况下,是持久化节点
[zk: 192.168.1.102:2181(CONNECTED) 4] create -e /node1/node-2 234
Created /node1/node-2
获取节点内容
get path 获取指定节点的内容
删除节点
delete /node_1/node_1_10000000001
整个节点全删除
注意:delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用rmr命令
rmr /node_1
查询相关指令
[zk: 192.168.1.102(CONNECTED) 18] ls /
[zookeeper]
cZxid = 0x500000015 创建节点时的事务id
ctime = Sat Aug 05 20:48:26 CST 2017 节点创建时间
mZxid = 0x500000016
mtime = Sat Aug 05 20:48:50 CST 2017 节点修改时间
pZxid = 0x500000015 子节点列表最后一次被修改的事务id(子节点变更以后才会产生pZxid的影响)
cversion = 0 节点版本号
dataVersion = 1 表示的是当前节点数据的版本号
aclVersion = 0 acl权限版本号(CREATE/READ/WRITE/DELETE/ADMIN)每种权限的粒度都不一
样
ephemeralOwner = 0x0 创建临时节点的时候,会有一个sessionId 。 该值存储的就是这个sessionid
dataLength = 3 数据值长度
numChildren = 0 子节点数
zookeeper 会话生命周期
zookeeper 实现原理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。