zookeeper
分布式协调服务
配置
zoo.cfg----配置文件
datadir----自己定义的目录路径
server.1=node1:2888:3888 第一台虚拟机地址
server.1=node1:2888:3888 第二台虚拟机地址
server.1=node1:2888:3888 第三台虚拟机地址
2888端口:提供zookeeper对外通信
3888端口:当leader挂掉之后,重新选择leader的时候提供对外通信
选举机制
id----serverid(设置的myid)
zxid-----(股份)
逻辑时钟------每个一个周期回加1(根据逻辑时钟判断我当前选举的状态)
原子广播
通过投票确定某一件事能不能做(过半原则—zookeeper最好是奇数)
2.1提交请求到follower,follower会将请求发送给leader
2.2leader将请求下发给所有的follower,F来判断,并将结果返回给L
2.2L将请求写入的文件分发到所有的follower------(最终一致性–及时在写入的过程中有节点连接不上,当恢复的时候还会把节点上写入数据)
角色
leader:领导者,发起一个请求,并且投票
follower:跟从者,响应leader的请求并发起投票
observer:监视leader,并将leader的状态告诉follower
他们三者的工作流程:
①:有一个写入请求,将请求传给follower
②:follower将请求转发给leader
③:leader将请求下发到各个follower,进行投票
④:follower将自己的想法返回给leader
zab协议
广播模式–选举出来leader,对外提供服务
恢复模式—选举leader,也就是4大状态存在
looking—观望
fllowing----跟从但是有想法
leading-----继承人(准备被继承)
observing----
监听机制:
follower查看leader的状态,然后将状态信息进行更新和发送。
通过eclipse创建连接
Zookeeper zk=new zookeeper(“192.168.79.125:2181” ,timeout,watcher)
create、getData
设置监听机制:(当的znode发生变化的时候,监听一下,但是只能监听一次)
1、设置 setData getChildren
2、启动 delete exits create、getData
zookeeper特性:
最终一致性
原子
可靠
实时
顺序
单一视图
zookeeper的类型
持久节点
临时节点
持久顺序节点
临时顺序节点
注意点:
1、在启动集群时候关闭防火墙
2、myid对应
三台节点同时启动,启动之后再有节点挂掉无所谓