大数据技术之Zookeeper(1)

目录

[Zookeeper 入门](#Zookeeper 入门)

概述

Zookeeper的主要特点包括:

Zookeeper的应用场景:

Zookeeper的基本概念:

架构:

Zookeeper工作机制

Zookeeper数据结构

[Znode(Zookeeper Node)](#Znode(Zookeeper Node))

Znode的类型

Znode路径

Znode属性

Watcher监听器

使用示例

总结


Zookeeper****入门

概述

Zookeeper是一个分布式的、开放源码的协调服务,用于大型应用中管理和协调分布式环境下的进程。它提供了一套简单易用的API接口,使得开发者可以专注于应用程序的核心功能,而不需要关心底层的复杂实现细节。

Zookeeper的主要特点包括:

  1. 一致性:任何一台服务器上的客户端将看到同样的视图。
  2. 原子性:更新要么成功,要么失败,不会出现部分成功的状态。
  3. 单一视图:无论客户端连接到集群中的哪个服务器,其看到的服务视图都是一致的。
  4. 可靠性:一旦一个更新被确认,该更新将会被持久化。
  5. 实时性:客户端能够实时收到状态变更的通知。

Zookeeper的应用场景:

  • 配置管理:集中存储和管理配置信息,简化配置同步过程。
  • 命名服务:为分布式应用中的组件提供统一的命名服务。
  • 集群管理:监控集群中的节点状态,实现动态调整。
  • 分布式锁:提供协调机制,使得多个进程可以互斥地访问共享资源。
  • 队列管理:实现分布式环境中任务的有序处理。

Zookeeper的基本概念:

  • Znode(Zookeeper Node):Zookeeper中的数据单位,类似于文件系统中的文件和目录。
  • 路径:每个znode都有一个唯一的路径来标识它。
  • 临时节点:与会话关联的节点,会话结束时自动删除。
  • 持久节点:创建后一直存在,除非手动删除。
  • 顺序节点:创建时自动获得一个递增的序号作为路径的一部分。

架构:

Zookeeper通常以集群模式运行,集群中的每个服务器节点都保存着相同的数据副本。客户端可以通过任何一个服务器节点进行读写操作,并且能够通过心跳检测机制来保持与服务器之间的连接。

Zookeeper工作机制

Zookeeper的工作机制主要包括以下几个关键点:

  1. 角色和状态

    • 角色:在Zookeeper的集群中,各个节点有领导者(Leader)、跟随者(Follower)和观察者(Observer)三种角色。
    • 状态:服务器的状态包括领导(Leading)、跟随(Following)、观察(Observing)和寻找(Looking)四种状态。
  2. 原子广播:Zookeeper的核心是原子广播,这个机制保证了各个服务器之间的同步。实现这个机制的协议叫做Zab协议(Zookeeper Atomic Broadcast protocol)。Zab协议有两种模式:

    • 恢复模式(Recovery选主):当集群中没有领导者时,所有服务器进入恢复模式,进行领导者选举。
    • 广播模式(Broadcast同步):在领导者选举完成之后,集群进入广播模式,进行正常的读写操作。
  3. 事务ID号(zxid):为了保证事务的顺序一致性,Zookeeper采用了递增的事务ID号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。

  4. Leader选举:当领导者崩溃或者领导者失去大多数的跟随者时,Zookeeper进入恢复模式,需要重新选举出一个新的领导者,让所有的服务器都恢复到一个正确的状态。Zookeeper的选举算法有两种:

    • 基于Basic Paxos实现的
    • 基于Fast Paxos算法实现的

Paxos算法概述:从Basic Paxos到Fast Paxos及在Zookeeper中的应用

  1. Znode数据模型:Zookeeper底层是一个树形结构的数据模型,用于数据的存储。每个节点称为Znode,它可以包含数据以及子节点。Znode有两种类型:持久节点和临时节点。持久节点即使在创建它的客户端会话结束之后仍然存在;临时节点则会在客户端会话结束时被删除。

  2. Watcher监听机制:Zookeeper提供了数据的发布订阅功能,客户端可以注册Watcher来监听特定Znode的变化,如节点内容变化、子节点列表变化等。当被监听的Znode发生改变时,Zookeeper会主动通知客户端。

  3. API应用:Zookeeper提供了一系列的API来支持客户端进行数据的读取、写入、创建节点等操作。

Zookeeper数据结构

Zookeeper的数据结构是一种类似文件系统的层次结构,用于存储和管理数据。这种结构被称为Znode(Zookeeper Node)树。下面是关于Zookeeper数据结构的一些关键点:

Znode(Zookeeper Node)

Znode是Zookeeper中的数据单元,它类似于文件系统中的文件和目录。每个Znode都有一个唯一的路径来标识它,并且可以存储少量的数据(最大限制为1MB)。Znode还可以拥有子节点,就像文件系统中的目录可以包含文件和其他目录一样。

Znode的类型

Znode有两种主要类型:

  1. 持久节点(Persistent Node)

    • 创建后一直存在,直到显式删除。
    • 即使创建它的客户端会话结束,节点仍然保留。
  2. 临时节点(Ephemeral Node)

    • 与创建它的客户端会话绑定。
    • 当客户端会话结束时,该节点自动被删除。

每种类型的节点还可以进一步细分为两种:

  • 顺序节点(Sequential Node)
    • 创建时,Zookeeper会在节点名称的末尾添加一个递增的数字。
    • 这样可以确保节点的创建顺序,并且可以用来实现一些特殊的功能,如分布式锁。

Znode路径

每个Znode都有一个唯一的路径来标识它,路径格式类似于Unix文件系统的路径。例如,/app/config 是一个Znode的路径,表示它位于/app目录下。

Znode属性

除了数据之外,每个Znode还具有一些元数据属性,包括但不限于:

  • Acl(Access Control List):控制哪些客户端可以对该节点执行何种操作。
  • Stat(Status):提供有关节点状态的信息,如版本号、创建时间和最后修改时间等。

Watcher监听器

Zookeeper提供了一种称为Watcher的机制,允许客户端注册监听器来监听特定Znode的更改。当被监听的Znode发生变化时(例如,数据更改、子节点的增加或删除),Zookeeper会异步地通知注册了Watcher的客户端。

使用示例

假设你有一个Zookeeper集群,你可以在根路径/下创建一个持久节点/app,并在其下创建一个临时节点/app/server1。你还可以在/app节点下创建一个带有顺序的子节点/app/leader-0000000001。这样的结构可以用于实现简单的服务发现或者作为分布式锁的基础。

总结

Zookeeper的数据结构是一种层次化的树状结构,由Znode组成。Znode可以存储数据、具有不同的生命周期,并且可以注册Watcher来监听状态变化。这种结构非常适合于构建分布式协调服务,如配置管理、服务发现、分布式锁等。

相关推荐
数据库安全23 分钟前
美创科技针对《银行保险机构数据安全管理办法》解读
大数据·人工智能·产品运营
ice___Cpu1 小时前
Git - 1( 14000 字详解 )
大数据·git·elasticsearch
tebukaopu1481 小时前
官方 Elasticsearch SQL NLPChina Elasticsearch SQL
大数据·sql·elasticsearch
.生产的驴3 小时前
Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
运维·服务器·前端·vue.js·分布式·前端框架·vue
水淹萌龙7 小时前
k8s 中使用 Service 访问时NetworkPolicy不生效问题排查
云原生·容器·kubernetes
jiedaodezhuti9 小时前
为什么elasticsearch配置文件JVM配置31G最佳
大数据·jvm·elasticsearch
思通数据10 小时前
AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命
大数据·人工智能·目标检测·机器学习·计算机视觉·数据挖掘·ocr
@小了白了兔10 小时前
RabbitMQ工作流程及使用方法
分布式·rabbitmq
dddaidai12310 小时前
分布式ID和分布式锁
redis·分布式·mysql·zookeeper·etcd
lilye6610 小时前
精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
大数据·人工智能·数据分析