一.简述一下ZooKeeper是什么?有哪些特征?
ZooKeeper是一个开源的分布式应用程序协调服务,它是Google的Chubby的一个开源实现,也是Hadoop和HBase等分布式系统的重要组件。ZooKeeper主要为分布式应用提供一致性服务,其设计目标是将复杂且易出错的关键服务封装起来,为用户提供一个简单易用的接口以及性能高效、功能稳定的系统。
ZooKeeper具有以下几个显著特征:
- 顺序一致性:来自相同客户端提交的事务,ZooKeeper将按照其提交顺序依次执行。
- 原子性:在ZooKeeper集群中提交的事务,要么全部完成,要么全部未完成,不存在部分完成的情况。
- 单一系统镜像:客户端连接到ZooKeeper集群的任意节点,其获得的数据视图都是相同的。
- 可靠性:事务一旦完成,其产生的状态变化将永久保留,直到其他事务进行覆盖。
- 实时性:事务一旦完成,客户端将于限定的时间段内,获得最新的数据。
ZooKeeper使用了一个类似于文件系统的数据模型,通过树状结构来存储数据,每个节点(Znode)都有一个路径和一个数据负载。此外,ZooKeeper支持顺序节点的创建,即创建的节点会自动带有唯一递增的序列号。同时,ZooKeeper还提供了临时节点,这些节点的生命周期与客户端会话相关联。
在ZooKeeper中,事件通知是一个重要机制。它支持Watch机制,客户端可以设置在Znode上的观察,以便在Znode发生更改时接收通知。这使得ZooKeeper能够实时地响应分布式系统中节点状态的变化,为分布式应用提供了高效且可靠的协调服务。