文章目录
- Zuukeeper
- ZooKeeper是什么?
- ZooKeeper和dubbo的区别?
- Zookeeper的java客户端都有哪些?
- ZooKeeper提供了什么?
- 说说ZooKeeper文件系统
- 说说ZAB协议?
- Znode有哪些类型?
- Zookeeper节点宕机如何处理?
- Zookeeper有哪几种几种部署模式?
- Zookeeper的典型应用场景?
- 说一下Zookeeper Watcher机制
- 客户端注册Watcher的流程?
- 服务端处理Watcher的流程?
- 客户端回调 Watcher流程?
- Zookeeper对节点的 watch监听通知是永久的吗?为什么不是永久的?
- 说说ACL权限控制机制
- 服务器有哪些角色?
- Zookeeper 下 Server工作状态有哪些?
- 集群支持动态添加机器吗?
- 什么是Chroot?
Zuukeeper
下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图
哪里不会点哪里
ZooKeeper是什么?
- ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
- 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。
- Zookeeper保证了如下分布式一致性特性:
- 顺序一致性
- 原子性
- 单一视图
- 可靠性
- 实时性(最终一致性)
- 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理。对于写请求,这些请求会同时发给其他zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。
- 有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper最新的zxid。
ZooKeeper和dubbo的区别?
- Zookeeper:
zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,
简单来说就是ip地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉,调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码的情况通过添加机器来提高运算能力。通过添加新的机器向 zookeeper注册服务,服务的提供者多了能服务的客户就多了。 - dubbo:
是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题。 - zookeeper和 dubbo的关系:
Dubbo将注册中心进行抽象,它可以外接不同的存储媒介给注册中心提供服务,有 ZooKeeper, Memcached, Redis等。
Zookeeperjava_24">Zookeeper的java客户端都有哪些?
zk自带的 zkclient
Apache开源的 Curator
ZooKeeper提供了什么?
文件系统
通知机制