zookeeper 使用场景
命名服务、配置管理、集群管理、分布式锁、队列管理
zk有哪些功能
集群管理:监控节点存活状态、运行请求
Leader选举:主节点挂掉后从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zk 协助完成
分布式锁:zk提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。zk对分布式锁控制
命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息
zk节点类型,项目用什么节点
持久性节点 PERSISTENT: 客户端与zk断开连接,节点存在
临时性节点 EPHEMERAL: 客户端与zk断开连接,节点删除
持久顺序性节点 PERSISTENT_SEQUENTIAL: 具备持久性znode特点和顺序性
临时顺序性节点 EPHEMERAL_SEQUENTIAL: 具备临时性znode特点和顺序性
zk通知机制
客户端对znode建立watcher事件,znode变化时,客户端会收到 zk 通知,客户端根据znode变化来改变
zk工作原理
使用Zab协议保证Server之间的同步
Zab协议
Client写请求转发给Leader,Leader发起投票,通知Follwer投票。Leader收集投票结果,投票过半时写入并通知Follwer。Client连接的Server收到消息,更新内存并响应