前言
提到ZooKeeper,相信大家都不会陌生。Dubbo,Kafka,Hadoop等等项目里都能看到它的影子。但是你真的了解 ZooKeeper 吗?如果面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?
一、ZooKeeper是什么
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
二、ZooKeeper 的由来
下面这段内容摘自《从Paxos到Zookeeper 》 ,本文中很多的名词介绍也来自本书。
三、ZooKeeper的特性
- 顺序一致性,从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中去。
- 原子性,所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,即整个集群要么都成功应用了某个事务,要么都没有应用。
- 单一视图,无论客户端连接的是哪个 Zookeeper 服务器,其看到的服务端数据模型都是一致的。
- 可靠性,一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直被保留,除非有另一个事务对其进行了变更。
- 实时性,Zookeeper 保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。
四、ZooKeeper的设计目标
- 简单的数据结构
Zookeeper 使得分布式程序能够通过一个共享的树形结构的名字空间来进行相互协调,即Zookeeper 服务器内存中的数据模型由一系列被称为ZNode的数据节点组成,Zookeeper 将全量的数据存储在内存中,以此来达到提高服务器吞吐、减少延迟的目的。 - 可以构建集群
Zookeeper 集群通常由一组机器构成,组成 Zookeeper 集群的每台机器都会在内存中维护当前服务器状态,并且每台机器之间都相互通信。 - 顺序访问
对于来自客户端的每个更新请求,Zookeeper 都会分配一个全局唯一的递增编号,这个编号反映了所有事务操作的先后顺序。 - 高性能
Zookeeper 和Redis一样全量数据存储在内存中,100%读请求压测QPS 12-13W。
下面整理了一些去面试经典必问的ZooKeeper问题,希望可以帮助到大家
1. ZooKeeper 是什么?
2. ZooKeeper 提供了什么?
3.Zookeeper 文件系统
4. ZAB 协议?
5. 四种类型的数据节点 Znode
6. Zookeeper Watcher 机制 -- 数据变更通知
7. 客户端注册 Watcher 实现
8. 服务端处理 Watcher 实现
9. 客户端回调 Watcher
10. ACL 权限控制机制
11. Chroot 特性
12. 会话管理
13. 服务器角色
14. Zookeeper 下 Server 工作状态
15. 数据同步
16. zookeeper 是如何保证事务的顺序一致性的?
17. 分布式集群中为什么会有 Master?
18. zk 节点宕机该如何处理?
19. zookeeper 负载均衡和 nginx 负载均衡区别
20. Zookeeper 有哪几种部署模式?
21. 集群最少要几台机器,集群规则是怎样的?
22. 集群支持动态添加机器吗?
23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是
24. Zookeeper 的 java 客户端都有哪些?
25. chubby 是什么,和 zookeeper 比你怎么看?
26. 说几个 zookeeper 常用的命令。
27. ZAB 和 Paxos 算法的联系与区别?
28. Zookeeper 的典型应用场景
本次的内容大致的就介绍到这里拉,由于内容太多,只能简单介绍到这里,如有需要以上内容的完整版,评论区暗号333,大家可以关注私信我获取哦
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
收藏 等于白嫖,点赞才是真情。