一、Zookeeper集群的特点

  1. Zookeeper:一个领导者 (Leader),多个跟随者 (Follower) 组成的集群
  2. 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器
  3. 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
  4. 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
  5. 数据更新原子性次数据更新要么成功,要么失败。
  6. 实时性,在一定时间范围内,Client能读到最新数据

Zookeeper集群的特点_分布式

二、Zookeeper集群的缺点

  1. 性能瓶颈:由于Zookeeper采用单线程模型,无法有效利用多核CPU,因此存在性能瓶颈。在处理大量并发请求时,Zookeeper的性能可能会成为整个系统的瓶颈。
  2. 容量限制:Zookeeper集群的节点数量有限制,通常在50个节点左右。随着节点数量的增加,Zookeeper的性能可能会下降,因此不适合大规模的分布式系统。
  3. 脑裂问题:由于Zookeeper采用多副本的架构,可能会出现脑裂问题。当不同节点之间的网络分裂时,可能会导致部分节点无法与其他节点通信,从而导致数据不一致性。
  4. 维护成本:Zookeeper集群需要经常进行监控和维护。由于每个节点都需要保持通信,因此网络延迟和带宽因素可能会影响系统的性能。需要定期检查集群的健康状况,并及时处理故障和异常情况。

三、Zookeeper数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,每个ZNode都可以通过其路径唯一标识。

Zookeeper集群的特点_linux_02


Znode是一个类似于文件系统的节点,它有以下几个属性:

  • path:节点的路径,用于唯一标识节点。
  • data:节点的数据,用于存储节点的值。
  • acl:节点的访问控制列表,用于控制对节点的访问权限。
  • stat:节点的状态信息,包括节点的创建时间、修改时间、版本号等。

Znode可以通过路径进行访问,类似于文件系统中的目录结构。每个节点可以包含子节点,也可以是叶子节点。

Zookeeper使用Znode来存储和管理数据,可以用来实现分布式锁、分布式队列、配置管理等功能。