从节点开始:
1.znode结构和window环境中的文件夹结构相似,zookeeper中每一个节点被认为一个znode
2.每个znode以"/"开头,通过路径引用,并且路径时绝对路径,每个路径都是唯一且不可改变的
3.引用的路径由Unicode字符串组成,加入一些限制,有特定含义,如"/zookeeper"用于存管理信息
4.znode兼备存储和目录两种特点,既可以存数据,有可以当做路径被调用
5.znode由三部分组成:stat表示状态信息版本等..data表示关联数据,children表示子节点信息
6.zookeeper用来管理调度数据,配置信息等..每个节点znode的存储很小,限制不超过1M,实际更小
7.每个节点被操作是具有原子性的,读只能整个读,写会整个节点覆盖
8.znode分为两种类型临时节点和永久节点,只能在创建时指定类型,之后不能改变
9.临时节点绑定会话,一次会话结束被删除也可手动删除,对所有客户可见,且不允许有子节点
10.永久节点只有在客户删除操作是才会删除
11.节点上可以设置watch,当节点状态改变,watch相当于监听,做出相应的操作,zookeeper会向客户发通知,且只发送一条通知,以减少网络流量
zookeeper存储结构:
操作节点的原子性:
watch机制:
重试策略:
集群选举:
sever的状态分为三种:
1.LOOKING:正在查询leader信息,不知道leader是谁
2.LEADING:当前server就是leader
3.FOLLOWING:leader已经选出,当前server同步到了leader信息
再 . zookeeper集群数目一般为奇数个:
原因有两个:1.容错,半数以上投票通过选举,所有至少两台才可进行选举,奇数个容错高成本低
2.防止脑裂,一个集群只允许一个leader,双数会出现两个leader,此时会导致集群不可用
zookeeper中的角色:
领导者:1.负责投票的发起和决议,2.更新系统状态
学习者:分为跟随者follower和观察者observer
follower:1.接收请求响应请求,2.参与选主投票
observer:1.接受客户连接转发到leader2.不参与选主,同步leader状态3.扩展系统,提高读取速度
客户端:发起请求
再 . zookeeper的核心:
原子广播机制,保证了各个server之间通信的同步,实现它的协议叫做zab协议
zab协议有两种模式:1.恢复模式,也就是正在选主状态中...
2.广播模式,意思是已选好主的状态,已进入同步...