Zookeeper学习

Zookeeper 是一个开源的分布式协调框架,它主要用于处理分布式系统中的一些常见问题,如同步、配置管理、命名服务和集群管理等。Zookeeper 是由 Apache 提供的,并且广泛应用于各种分布式应用中,特别是在高可用、高可靠性和高性能的系统中。

Zookeeper 的主要功能

  1. 分布式协调:Zookeeper 提供了协调多个节点(服务器)间行为的机制。例如,分布式锁、选举、配置管理等。
  2. 命名服务:Zookeeper 提供类似于文件系统的树形结构,可以作为分布式系统中的命名服务,帮助各个节点在分布式环境中互相发现。
  3. 同步服务:Zookeeper 可以帮助多个客户端保持一致的状态。一个典型的例子是分布式锁,它确保在同一时刻只有一个客户端能进行某个操作。
  4. 配置管理:Zookeeper 可以集中管理配置信息并将其同步到所有节点,确保各个节点的配置信息一致。
  5. 高可用性:Zookeeper 本身设计为高可用且容错的,可以在节点出现故障时继续工作。

Zookeeper 的架构

Zookeeper 的核心架构由以下几个部分组成:

  • Zookeeper 集群 :Zookeeper 由多个节点组成,这些节点之间会通过选举产生一个 leader 节点,其它节点为
    follower。整个集群至少需要 3 个节点,以确保能够在节点失败时继续提供服务。
  • Zookeeper 客户端 :客户端通过 Zookeeper 提供的 API 进行交互,它可以是任意编程语言的客户端,Zookeeper
    提供了 Java、C、Python 等语言的客户端库。
  • Zookeeper 服务器(节点)
    Leader 节点:负责处理所有的写请求,并将数据同步到其它节点。
    Follower 节点:负责处理所有的读请求,且将写请求转发给 leader 节点。跟随 leader 节点的变化。
    Observer 节点:仅作为观察者,不参与投票和写请求,但它可以提供读服务,减少集群的压力。
    ZNode:Zookeeper 中的核心数据结构,类似于文件系统中的文件或目录。
  • ZNode 支持两种数据类型
  • 持久节点:当客户端断开连接时,节点依然存在。
  • 临时节点:当客户端与 Zookeeper 服务器断开连接时,节点会被自动删除。

Zookeeper 的工作原理

Zookeeper 基于 Paxos 协议实现分布式一致性。所有的写请求都会先由 Leader 节点进行处理,然后将更改同步到所有的 Follower 节点。

  1. 读请求:Zookeeper 集群中的任何节点都可以处理读请求,通常由 Follower 节点处理。
  2. 写请求 :写请求会先被发送到 Leader 节点,Leader 节点会进行数据处理并同步给其它节点。如果 Leader
    节点宕机,集群会进行 Leader 选举,确保集群的高可用性。
  3. 一致性 :Zookeeper 保证
    顺序一致性(所有操作按提交顺序被执行),原子性(每个操作要么完全成功,要么完全失败),单一视图(客户端能看到一致的数据视图),实时性(客户端总能看到最新的数据),高可靠性(如果某个节点失败,系统仍然可以继续运行)。

Zookeeper 的常用操作

创建节点:

bash

create /myNode "data"

创建一个路径为 /myNode,值为 "data" 的节点。

获取节点数据:

bash

get /myNode

获取路径 /myNode 的数据。

修改节点数据:

bash

set /myNode "newData"

修改路径 /myNode 的数据为 "newData"。

删除节点:

bash

delete /myNode

删除路径 /myNode 的节点。

获取子节点:

bash

ls /myNode

获取 /myNode 路径下的子节点列表。

Zookeeper 的应用场景

  1. 分布式锁:通过临时节点实现分布式锁,确保在同一时刻只有一个客户端能够操作某个资源。
  2. 服务注册与发现:Zookeeper 用于服务注册与发现,允许各个服务通过注册节点将自己暴露给集群中的其他节点,其他节点可以通过获取
    ZNode 子节点来发现服务。
  3. 分布式配置管理:Zookeeper 可以集中管理配置信息,所有服务都可以通过 Zookeeper
    获取最新的配置信息,确保配置的一致性和可更新性。
  4. 分布式协调:通过 Zookeeper 实现如选举、同步、状态共享等任务。

官方文档

https://zookeeper.apache.org/doc/r3.7.0/

相关推荐
光影少年41 分钟前
云计算生态及学习方向和就业领域方向
学习·云计算
好奇龙猫42 分钟前
[AI学习:SPIN -win-安装SPIN-工具过程 SPIN win 电脑安装=accoda 环境-第四篇:代码修复]
人工智能·学习
居7然1 小时前
DeepSeek-7B-chat 4bits量化 QLora 微调
人工智能·分布式·架构·大模型·transformer
luckyPian1 小时前
学习go语言
开发语言·学习·golang
chenzhou__1 小时前
MYSQL学习笔记(个人)(第十五天)
linux·数据库·笔记·学习·mysql
JJJJ_iii4 小时前
【机器学习01】监督学习、无监督学习、线性回归、代价函数
人工智能·笔记·python·学习·机器学习·jupyter·线性回归
Han.miracle5 小时前
数据结构——二叉树的从前序与中序遍历序列构造二叉树
java·数据结构·学习·算法·leetcode
知识分享小能手6 小时前
uni-app 入门学习教程,从入门到精通,uni-app基础扩展 —— 详细知识点与案例(3)
vue.js·学习·ui·微信小程序·小程序·uni-app·编程
●VON7 小时前
重生之我在大学自学鸿蒙开发第九天-《分布式流转》
学习·华为·云原生·harmonyos·鸿蒙
无妄无望8 小时前
docker学习(4)容器的生命周期与资源控制
java·学习·docker