zookeeper总结

临时节点(有序)、持久化节点(有序)

zookeeper是一个开源的分布式协调框架:数据订阅发布、负载均衡、集群、master选举、分布式锁。。。

原子性:要么同时成功、要么同时失败(分布式事务)

单一视图:无论客户端连接到哪个服务器,所看到的模型都是一样

可靠性:一旦服务器提交了一个事务并且获得了服务器返回成功的标识,那么这个事务所引起的服务器端的变更会一直保留

实时性:近实时

zookeeper并不是用来存储数据的,通过监控数据状态的变化,达到基于数据的集群管理

集群配置

1、修改zoo.cfg

      server.id=ip:port1:port2  第一个port数据同步通信,第二个port:leader选举(3181)  id=myid(myid参与leader选举,在整个

      集群中表示唯一服务器的标识)

2、dataDir目录下 创建一个myid的文件,内容:server.id对应当前服务器的id号

3、如果增加observer,需要在第一步中,server.id=ip:port:port:observer ;  peerType=observer

会话

NOT_CONNECTED -> CONNECTING -> CONNECTED -> CLOSE(会话过期或连接关闭)

CONNECTED->CONNECTING(服务器端没有响应)

数据模型

数据模型是一个树形结构,最小数据单元是ZNODE

临时节点(在当前会话中)和持久化节点(保存在本地磁盘)

临时有序节点  create -s -e  /temp 11

持久化有序节点 

状态信息

Stat:

#创建节点的事物ID
cZxid = 0x385
#创建时间
ctime = Tue Sep 24 17:26:28 CST 2019
#修改节点的事物ID
mZxid = 0x385
#最后修改时间
mtime = Tue Sep 24 17:26:28 CST 2019
# 子节点变更的事物ID
pZxid = 0x385
#这表示对此znode的子节点进行的更改次数(不包括子节点)
cversion = 0
# 数据版本,变更次数
dataVersion = 0
#权限版本,变更次数
aclVersion = 0
#临时节点所属会话ID
ephemeralOwner = 0x0
#数据长度
dataLength = 17
#子节点数(不包括子子节点)
numChildren = 0

zab协议: 如果客户端发了一个事务请求给leader,而leader发送给各个follower以后,并且收到了ack, leader已经commit。在准备ack给各个follower节点commit时,leader挂了,怎么处理

1、选举新的leader(zxid的最大值)

2、同步给其他的follower

watcher

EventType

None 客户端与服务器端成功建立会话

NodeCreated  节点创建

NodeDeleted    节点删除

NodeDataChanged 数据变更:数据内容

NodeChildrenChanged  子节点发生变更,子节点删除、新增才会触发

watcher的特性

一次性触发:事件被处理一次后,会被移除,如果需要永久监听,则需要反复注册

zkClient(永久监听的封装)

curator

java API:zk.exists, zk.getData 创建一个watcher监听

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值