【zookeeper特点和集群架构】

news/2024/10/17 12:18:48/

文章目录

  • 1. Zookeeper介绍
  • 2、ZooKeeper数据结构
  • 3、Zookeeper集群架构

1. Zookeeper介绍

ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分
布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性
服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
官方:https://zookeeper.apache.org/

ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。提供基
于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理,从而用来维护和
监控存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理、统
一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调等功能。
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责
存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper
就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

2、ZooKeeper数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个
ZNode。

ZooKeeper的数据模型是层次模型,层次模型常见于文件系统。层次模型和key-value模型是两种主流
的数据模型。ZooKeeper使用文件系统模型主要基于以下两点考虑
1文件系统的树形结构便于表达数据之间的层次关系
2文件系统的树形结构便于为不同的应用分配独立的命名空间( namespace )

ZooKeeper的层次模型称作Data Tree,Data Tree的每个节点叫作Znode。不同于文件系统,每个节
点都可以保存数据,每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一
标识,每个节点都有一个版本(version),版本从0开始计数。

一个znode可以使持久性的,也可以是临时性的:

  1. 持久节点(PERSISTENT): 这样的znode在创建之后即使发生ZooKeeper集群宕机或者client宕机
    也不会丢失。
  2. 临时节点(EPHEMERAL ): client宕机或者client在指定的timeout时间内没有给ZooKeeper集群
    发消息,这样的znode就会消失。
    如果上面两种znode具备顺序性,又有以下两种znode :
  3. 持久顺序节点(PERSISTENT_SEQUENTIAL): znode除了具备持久性znode的特点之外,znode
    的名字具备顺序性。
  4. 临时顺序节点(EPHEMERAL_SEQUENTIAL): znode除了具备临时性znode的特点之外,zorde
    的名字具备顺序性。
    zookeeper主要用到的是以上4种节点。
  5. Container节点 (3.5.3版本新增):Container容器节点,当容器中没有任何子节点,该容器节点
    会被zk定期删除(定时任务默认60s 检查一次)。 和持久节点的区别是 ZK 服务端启动后,会有一个单
    独的线程去扫描,所有的容器节点,当发现容器节点的子节点数量为 0 时,会自动删除该节点。可以
    用于 leader 或者锁的场景中。
  6. TTL节点: 带过期时间节点,默认禁用,需要在zoo.cfg中添加 extendedTypesEnabled=true 开
    启。 注意:TTL不能用于临时节点

3、Zookeeper集群架构

3.1 集群角色
Leader: 领导者
事务请求(写操作)的唯一调度者和处理者,保证集群事务处理的顺序性;集群内部各个服务器的
调度者。对于create、setData、delete等有写操作的请求,则要统一转发给leader处理,leader需要
决定编号、执行操作,这个过程称为事务。
Follower: 跟随者
处理客户端非事务(读操作)请求(可以直接响应),转发事务请求给Leader;参与集群Leader选举
投票。
Observer: 观察者
对于非事务请求可以独立处理(读操作),对于事务性请求会转发给leader处理。Observer节点接收
来自leader的inform信息,更新自己的本地存储,不参与提交和选举投票。通常在不影响集群事务处
理能力的前提下提升集群的非事务处理能力。


http://www.ppmy.cn/news/1283271.html

相关文章

LeetCode——动态规划

动态规划 一、一维数组:斐波那契数列 爬楼梯70简单 dp定义: dp[i]表示爬到第i阶有多少种不同的方式 状态转移方程: dp[i] dp[i-1] dp[i-1] (每次可以爬1或2个台阶) 边界条件: dp[0] 1; dp[1] 1;&#…

最佳实践!Apipost使用指南

自诞生以来,Apipost凭借其简洁直观的用户界面、强大的功能以及简单、易上手的操作,让Apipost成为了开发人员不可或缺的工具。本文将详细介绍Apipost的主要功能和使用方法,帮助大家更好地了解这款优秀的API开发工具。 下载安装 直接进入Apip…

【JavaWeb学习-第四章(1)】Ajax

文章目录 1. Ajax介绍1.1. Ajax概述1.2. Ajax作用1.3. 同步异步 2. 原生Ajax3. Axios3.1. Axios的基本使用3.2. Axios快速入门3.3. 请求方法的别名3.4. 案例 注: 文章信息来源:b站黑马程序员相关的教学视频      关于该专栏的文章:    …

软件测试/测试开发丨Pytest学习笔记

Pytest 格式要求 文件: 以 test_ 开头或以 _test 结尾类: 以 Test 开头方法/函数: 以 _test 开头测试类中不可以添加构造函数, 若添加构造函数将导致Pytest无法识别类下的测试方法 断言 与Unittest不同, 在Pytest中我们需要使用python自带的 assert 关键字进行断言 assert…

数据库开发之子查询的详细解析

1.4 子查询 1.4.1 介绍 SQL语句中嵌套select语句,称为嵌套查询,又称子查询。 SELECT * FROM t1 WHERE column1 ( SELECT column1 FROM t2 ... ); 子查询外部的语句可以是insert / update / delete / select 的任何一个,最常见…

使用pytorch神经网络拟合计算模型

一. 内容简介 使用pytorch神经网络拟合计算模型 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.3数据文件 链接:https://pan.baidu.com/s/1csJOoErGyx77MW_FImVKjg?pwd1234 三.主要流…

搭建WebDAV服务+cpolar内网穿透公网同步Zotero科研文献

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献,不但免费,功能还很强大实用。 ​ Zotero 支…

大数据-Hive练习-环比增长率、同比增长率、复合增长率

目录 🥙12.1 环比增长率 1. 概述 2. 公式 3. 示例 4.练习-需求:计算各类商品的月环比增长率 🥙12.2 同比增长率 1. 概述 2. 公式 3. 示例 4. 练习-需求:计算各类商品的月同比增长率 🥙12.3 复合增长率 1. 概述 2. 公式 3. 示例…