1.Zookeeper是什么?
引用官方的说法:“Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API”。
2.Zookeeper总体结构
Zookeeper服务自身组成一个集群。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。
Zookeeper逻辑图如下:
(1).客户端可以连接到每个server,每个server的数据完全相同。
(2).每个follower都和leader有连接,接受leader的数据更新操作。
(3).Server记录事务日志和快照到持久存储。
(4).大多数server可用(2n+1个服务允许n个失效),整体服务就可用。
3.Zookeeper数据模型
Zookeeper表现为一个分层的文件系统目录树结构(不同于文件系统的是,节点可以有自己的数据,而文件系统中的目录节点只有子节点)。
圆形节点可以含有子节点,多边形节点不能含有子节点。一个节点对应一个应用,节点存储的数据就是应用需要的配置信息。
Zookeeper 特点
(1).顺序一致性:按照客户端发送请求的顺序更新数据。
(2).原子性:更新要么成功,要么失败,不会出现部分更新。
(3).单一性 :无论客户端连接哪个server,都会看到同一个视图。
(4).可靠性:一旦数据更新成功,将一直保持,直到新的更新。
(5).及时性:客户端会在一个确定的时间内得到最新的数据。
时间: 2024-10-19 10:24:43