Zookeeper介绍
Zookeeper介绍
Zookeeper特性
zookeeper是一个开源的分布式协调服务.设计的目标是将那些复杂容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集.
一致性
从同一个客户端发起的事务请求,最终在zookeeper会按顺序执行.
原子性
所有事务请求的处理结果在所有节点上都是一致的.
单一试图
无论客户端连接上的是哪个zookeeper,看到的服务端数据模型都是一致的.
zookeeper的数据模型类似于一个文件系统,节点(ZNode)之间的关系就像文件系统的目录结构一样.不过zookeeper将全部数据存储在内存中,以此来实现服务器的高吞吐,减少延迟的目的.
zookeeper的集群通常由3-5台组成,只要集群中一半以上的机器正常工作,整个集群就能正常对外工作.
对于客户端的每个请求,zookeeper都会分配全局唯一的递增编号,这个编号反应了事务的执行顺序.
Zookeeper集群
集群中有三种角色:Leader,Fllower,Observer.
所有的请求都由leader处理,它负责将一个客户端请求转换成一个事务,并将事务分发给其他节点,超过半数正确反馈之后,会再次发送commit消息,要求对前一个事务提交。
leader服务器为客户端提供读写服务.其他的只提供读服务,唯一的区别在于Observer不参与选择leader的过程,也不参与写操作的“过半写成功”策略.
在zk中,客户段是通过tcp长连接和zk建立连接的.对外的默认端口号是2181.客户端Session的sessionTimeout值用来设定客户端会话超时时间.如果服务器压力过大,或者网络原因,断开了与ZK的连接,只要在timeout时间之内连上,那么之前session依然有效。
ZNode
zk中的数据节点叫做Znode,数据模型是ZNode Tree,由斜杆进行分割,就是一个Znode,比如:/foo/path.每个节点上都会保存自己的内容,同时保存一系列属性.
Znode可以分为持久节点和临时节点方案.持久节点只有主动remove才会被移除,临时节点的生命周期和客户端会话绑定,一旦客户端失效,这个节点也失效.
zk还允许用户为每一个节点添加一个属性:SEQUENTIAL.在节点被创建时,会在名字之后加上一个整形数字.
ACL
zk采用acl来进行权限控制,类似unix文件系统的权限控制.
1.create 2.read 3.write 4.delete 5 admin(设置节点ACL权限)其中create和delete都是针对子节点的操作.
权限模式
ip
ip模式通过地址粒度进行权限控制.例如:"ip:192.168.1.2".
digest
这个是最常用的模式.用类似"username:password"形式的权限标识,zk会进行两次编码(sha-1,base64)
super
是一种特殊的digest模式. 在zk启动的时候加上-Dzookeeper.DigestAuthenticationProvider.superDigest=username:password
是用这个账号就可以拥有所有的权限.
world
world是一种最开放的权限控制模式,从其名字中也可以看出,事实上这种权限控制几乎没有任何作用,对所有用户开放.
ZAB协议(原子消息广播协议)
ZAB协议包括两种基本的模式,分别是奔溃恢复和消息广播.当leader出现网络中断或者奔溃的是很好,zab协议会进入自动恢复模式并重新选举leader,当集群中过半的机器与新leader完成数据同步,就会退出恢复模式。
当新的一个节点加入集群的时候,会先进入数据恢复模式:找到leader所在的服务器,同步数据,然后在一起参与到消息广播流程中国年.
ZAB协议的消息广播过程使用的是一个原子广播协议,类似一个二段提交过程.
假设一个事务被提交了,并且得到过半的节点的ack反馈,但是在发送commit之前leader挂掉了.假设leader现在广播了消息P1,P2,C1,P3,C2.其中一台只收到了P1P2C1 ,另一台只收到了P1P2.那么重新选举leader的时候会把拥有最大编号C1的那台选举为leader,原先的leader重新接入的时候,P3,C2 会被抛弃
阅读更多
- Zookeeper介绍
- Zookeeper介绍及简单配置
- zookeeper介绍(一)
- Zookeeper系列(一)背景介绍及基本概念
- zookeeper集群介绍
- 【Zookeeper】——功能介绍
- [Zookeeper系列一]Zookeeper应用介绍与安装部署
- Dubbo+zookeeper+(Java)实现分布式系统----zookeeper入门和使用介绍
- ZooKeeper学习1---简单介绍
- zookeeper简单介绍
- zookeeper介绍
- Zookeeper学习笔记-zookeeper介绍
- [转]ZooKeeper学习第一期---Zookeeper简单介绍
- 分布式锁实现方式介绍和Zookeeper实现原理
- zookeeper入门基本介绍
- ZooKeeper介绍、分析、理解
- 读《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之服务器角色介绍
- Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)
- Zookeeper介绍和简单3台配置集群
- zookeeper Watcher API 介绍