zookeeper
一,简介
1.1:zk就是一个文件系统,不过与linux相比不同的是不只是叶子节点可以存放数据,节点变化时会通知客户端。
1.2:节点类型:顺序持久化节点、持久化节点、顺序临时节点、临时节点
二,安装
三,命令
ls:查看节点
create /zkpro xxx:创建节点
set /zk:修改节点
get /zkpro:获取节点
delete /zkpro:删除节点(有子节点的话要删除子节点)
四,监听通知机制
4.1监听通知是如何实现的:通过观察者模式,变化了会调用监听回调方法。
4.2为什么监听通知只发通知而不给变化的数据:数据不一定需要、压力大
五,集群
5.1follower接受写请求会发请求发送给leader,然后leader再同步给follower。这样的好处是数据的一致性更改好控制。接收到请求后会生成全局唯一顺序事务id,leader只有收到半数以上follower的ack的消息后才会进行事物的提交。提交时会通知follower。
5.2:选举的机制:选取事务id最大的节点、如果事务id一样的话用其他的指标如机器id决定。
六,常见面试题
6.1 为什么集群一样要是奇数?
:这样能够保证即便是集群分裂成了个个小集群也只有一个leader提供服务
6.2 ZAB协议是什么?
:1.发送数据给follower、2.等待follower的ack回应,过半提交、3.过半回应,执行提交命令,通知提交自己。
6.3 从cap角度分析一下zk和eureka的区别?
:zk严格保证一致性,eureka保证了可用性。
6.4 脑裂是什么?
:选出了多个leader
参考:https://www.toutiao.com/a6730379918980416007/