Zookeeper - [01] 概述

官网】|【下载

 

 

Zookeeper 概述

Zookeeper 特点

Zookeeper 数据结构

Zookeeper 监听器原理

Zookeeper 写数据流程

 

 

 

Zookeeper 概述

Zookeeper 是一种分布式的、开源的分布式应用程序协调服务。它公开了一组简单的原语,分布式应用程序可以在此基础上实现用于同步、配置维护以及组和命名的更高级别的服务。它是为了便于编程而设计的,它使用的数据模型是按照文件系统熟悉的目录树结构设计的。它运行在Java中,并对Java和C都有绑定。

Zookeeper是一个分布式协调服务的开源概架,主要用来解决分布式集群中应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题,

ZooKeeper本质上是一个分布式的小文件存储系统,提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理,从而用来维护和监控你存储的数据的状态变化,通过监控这些数据状态的变化,从而可以达到基于数据的集群管理,诸如:统一命名服务、分布式配置管理、负载均衡、分布式锁、分布式协调等功能。

 

 

Zookeeper 特点

  1. 主从结构:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  2. 半数机制:集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。
  3. 数据一致性:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
  4. 可靠性:如果消息被其中一台服务器接收,那么将被所有服务器接收。
  5. 顺序性:更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。
  6. 数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态
  7. 实时性:在一定时间范围内,Zookeeper保证客户端在一定时间间隔范围内获取服务器的更新信息(即能读到最新数据),或者服务器失效的信息。

 

 

Zookeeper 数据结构

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

 

 

Zookeeper 监听器原理

  1. 首先要有一个main( )线程
  2. 在main线程中创建Zookeeper客户端,这时就会创建两个线程,
    1. 一个负责网络连接通信(connect)
    2. 一个负责监听(listener)。
  3. 通过connect线程将注册的监听事件发送给Zookeeper。
  4. 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
  5. Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
  6. listener线程内部调用了process( )方法。

 

 

Zookeeper 写数据流程

  1. Client向Zookeeper的Server1上写数据,发送一个写请求。
  2. 如果Server1不是Leader,那么Server1会把接受到的请求进一步转发给Leader,因为每个Zookeeper的Server里面有一个是Leader,这个Leader会将写请求广播给各个Server,比如Server1和Server2,各个Server会将该写请求加入待写队列,并向Leader发送成功信息。
  3. 当Leader收到半数以上Server的成功信息,说明该操作可以执行。Leader会向各个Server发送提交信息,各个Server收到信息后会落实队列里的写请求,此时写成功。
  4. Server1会进一步通知Client数据写成功了,这时就认为整个写操作成功。

 

posted @   HOUHUILIN  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示