Zookeeper
Zookeeper是什么
ZooKeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务。
分布式应用程序可以基于ZooKeeper实现数据发布与订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Leader选举、分布式锁、分布式队列等功能。
Zookeeper角色分配
Zookeeper采用主备模式,集群中每台机器都有自己的角色
- leader
- Leader能为客户端提供读和写服务,Leader服务器是整个集群工作机制的核心
- 事务请求的唯一调度者和处理者,保证集群事务处理的顺序性
- follower
- 拥有选举权,拥有投票权
- 接受客户端的访问
- 如果客户端执行写请求,只是将请求转发给Leader
- Observer【和follower功能一致,但是不参与leader选举】
- 只可以为客户端提供数据的查询和访问
- 如果客户端执行写请求,只是将请求转发给Leader
节点分类
- 短暂(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
- 持久(persistent):客户端和服务器端断开连接后,创建的节点不删除
Zookeeper题库
-
zookeeper自身特性说法
zookeeper是一个被动协调服务组件
-
Zookeeper的Leader节点在收到数据变更请求后的读写流程
先写入磁盘在写入内存
-
ZooKeeper提供的服务包括
配置维护、域名服务、分布式同步、组服务等
-
Zookeeper 都有哪些功能
集群管理,主节点选举,分布式锁,命名服务
-
Zookeeper这种数据结构包括的特点有
- 每个子目录(节点)都被称作为znode,这个znode是被它所在的路径唯一标识
- znode可以有子节点目录,并且每个znode可以存储数据,注意EPHEMERAL(临时的)类型的目录节点不能有子节点目录
- znode是有版本的(version),每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据,version号自动增加
- znode有多种不同的类型