Zookeeper简述

数新网络-让每个人享受数据的价值

官网现已全新升级—欢迎访问!

前 言

ZooKeeper是一个开源的、高可用的、分布式的协调服务,由Apache软件基金会维护。它旨在帮助管理和协调分布式系统和应用程序,提供了一个可靠的平台,用于处理分布式同步、配置管理和群组服务等任务。ZooKeeper广泛应用于构建分布式系统,它提供了一个稳定的基础来管理配置、协调节点、实现分布式锁、实现分布式队列等。通过ZooKeeper,开发人员可以轻松解决分布式系统中的同步和协调问题,使得分布式应用的开发更加简单和可靠。

01 zookeeper的特点

1-1 高可用性

ZooKeeper的设计目标之一是高可用性。它通过复制数据到多个服务器,使用Quorum算法来确保数据的一致性。如果部分节点发生故障,仍然能够提供可用的服务,保持系统的可用性。

1-2 一致性

ZooKeeper提供强一致性保证。在ZooKeeper集群中,大多数节点(法定人数)必须就数据的状态达成一致意见。这样可以确保每个客户端对数据的读取都能获得相同的最新数据。

1-3 简单数据模型

ZooKeeper采用类似文件系统的数据模型,使用树状结构来存储数据。每个节点(Znode)都有一个路径和一个数据负载。这种简单的数据模型使得ZooKeeper易于理解和使用。

1-4 事件通知

ZooKeeper支持Watch机制,客户端可以设置在Znode上的观察,以便在Znode发生更改时接收通知。这样可以实现分布式的事件通知和协作机制,支持事件驱动的应用程序设计。

1-5 顺序节点

 ZooKeeper支持顺序节点的创建,即创建的节点会自动带有唯一递增的序列号。这个特性可用于实现分布式锁、分布式队列等常见的协调原语。

1-6 原子操作

ZooKeeper提供原子操作,可以保证复杂的多步骤操作在ZooKeeper上是原子的。这些原子操作为构建高级别的分布式协调原语提供了支持。

1-7 集群模式

一致性。ZooKeeper集群中的节点可以动态地加入或离开,使得系统更加灵活和可扩展。

1-8 临时节点

ZooKeeper支持临时节点,这些节点的生命周期与客户端会话相关联。当客户端会话结束时,临时节点会被自动删除,这样可以实现临时性的数据和状态管理。

02  zookeeper架构

下图为zookeeper架构的角色分布图:

图片

2-1 Leader:

集群中的一个服务器被选举为Leader。Leader负责处理客户端的写请求(例如创建、更新和删除Znodes)和协调分布式事务。Leader通过ZooKeeper协议来确保写操作在集群中的大多数节点上同步执行,以保持数据的一致性。如果Leader服务器发生故障或断开连接,集群会通过选举算法自动选择新的Leader。

2-2 Follower

Follower是集群中的其他服务器,它们遵从Leader的指令,复制Leader上的写操作,以保持数据一致性。Follower可以处理客户端的读请求,但不能处理写请求。Follower与Leader保持心跳连接,以便及时了解Leader的状态。

观察者是一种特殊类型的ZooKeeper服务器,它不参与Leader选举,也不参与写操作的复制。

03  选举机制

集群中在 Zookeeper运行期间 Leader 和 非 Leader 各司其职,当有非 Leader 服务器宕机或加入不会影响 Leader,但是一旦 Leader 服务器挂了,那么整个 Zookeeper 集群将暂停对外服务,会触发新一轮的选举。

图片

第一次投票每台机器都会将票投给自己。接着每台机器都会将自己的投票发给其他机器,如果发现其他机器的zxid比自己大,那么就需要改投票重新投一次。比如server1 收到了三张票,发现server2的xzid为102,pk一下发现自己输了,后面果断改投票选server2为老大。

3-1 Server id(或sid):服务器ID

比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大,比如初始化启动时就是根据服务器ID进行比较。

3-2 Zxid:事务ID

服务器中存放的数据的事务ID,值越大说明数据越新,在选举算法中数据越新权重越大。

3-3 Epoch:逻辑时钟

也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的,每投完一次票这个数据就会增加。

3-4 Server状态:选举状态

LOOKING,竞选状态。

FOLLOWING,随从状态,同步leader状态,参与投票。

OBSERVING,观察状态,同步leader状态,不参与投票。

LEADING,领导者状态。

04 ZAB协议

ZAB(Zookeeper Atomic Broadcast)协议是Zookeeper内部用于实现分布式一致性的核心协议。它是一个基于原子广播的协议,用于保证Zookeeper集群中数据的一致性和可靠性。ZAB协议是Zookeeper的关键特性之一,确保在集群中的各个节点之间维持数据的一致性。

ZAB协议的特点:

原子广播:ZAB协议确保事务是原子性广播的,要么所有Follower节点都接收到该事务,要么都没有接收到。这样可以保证数据的一致性。

崩溃恢复:ZAB协议允许集群在部分节点宕机或崩溃后,重新选举新的Leader,从而保持服务的可用性和容错性。

顺序性:ZAB协议保证所有节点按照相同的顺序处理事务,从而保持数据的一致性。

轻量级:ZAB协议只需要在集群中的少数节点上进行广播和确认,因此具有较低的通信开销。

交叉验证可以帮助准确地估计模型的性能,从而支持更好的模型选择和超参数调整,以获得更好的泛化性能。

05 CAP理论

Zookeeper是一个分布式协调服务,它主要用于构建分布式系统中的协调和同步机制。而CAP理论则是分布式系统理论中的重要概念,它描述了在分布式系统中三个关键属性的权衡:一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。CAP理论指出在分布式系统中,无法同时满足这三个属性,只能选择其中两个,因为其中任意两个属性之间是存在冲突的。

具体来说,CAP理论的三个属性解释如下:

5-1 一致性(Consistency)

在分布式系统中,一致性意味着所有节点在同一时刻看到的数据副本是相同的。即使是在有多个副本的情况下,所有节点也能够看到相同的数据。

5-2 可用性(Availability)

可用性指的是系统能够在有限时间内对请求作出响应,并能够保证服务的可用性,即使在部分节点故障的情况下。

5-3 分区容忍性(Partition Tolerance)

网络中断或节点之间无法相互通信,系统仍然能够保持可用性和一致性。

在CAP理论中,在分布式系统中只能选择其中两个属性,并且一般情况下选择分区容忍性是必须的,因为网络分区是不可避免的,特别在大规模的分布式系统中。Zookeeper在设计时倾向于CP(一致性和分区容忍性)模型。

它优先保证数据的一致性和分区容忍性,而可用性可能会在某些情况下受到影响。在Zookeeper中,当网络分区发生时,集群会尝试维持数据的一致性,但可能会导致一些节点在分区期间暂时不可用。这是因为Zookeeper为了保持数据的一致性,需要在多数节点上进行写操作确认,如果无法满足多数节点的写操作,写操作将被阻塞,从而影响可用性。

06 总结

Zookeeper 作为 Hadoop 项目中的一个子项目,是 Hadoop 集群管理的一个必不可少的模块,它主要用 来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、 Server 之间状态同步等。

Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101989.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebServer 解析HTTP 请求报文

一、TCP 状态转换 浏览器访问网址,TCP传输全过程 二、TCP协议的通信过程 三、TCP 通信流程 // TCP 通信的流程 // 服务器端 (被动接受连接的角色) 1. 创建一个用于监听的套接字- 监听:监听有客户端的连接- 套接字:这…

【List篇】ArrayList 详解(含图示说明)

Java中的ArrayList是一个动态数组,可以自动扩展容量以适应数据的添加和删除。它可以用来存储各种类型的数据,例如String,Integer,Boolean等。ArrayList实现了List接口,可以进行常见的List操作,例如添加、插…

云备份客户端——数据管理模块

数据管理模块设计之前,我们需要先明确该模块的信息是用来做什么的。根据上文分析该模块信息主要用于判断一个文件是否需要备份,判断条件有两个:1.新增文件 2.被修改过的文件 新增文件好判断,由于我们获得新文件后是先上传文件&…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

听书网站模板源码 懒人书院网站源码 苹果cms手机听书网站模版源码 支持手机端

苹果cms超漂亮UI高仿芒果TV听书网站模板带手机端。 手机版修改logo,ting_wap/images/logo.png 电脑版修改logo,ting_pc/img/logo.png 编辑推荐后台推荐5颗星。 新势力/热播榜单后台推荐9颗星。

OLED透明屏模块:引领未来显示技术的突破

OLED透明屏模块作为一项引领未来显示技术的突破,以其独特的特点和卓越的画质在市场上引起了广泛关注。 根据行业报告,预计到2025年,OLED透明屏模块将占据智能手机市场的20%份额,并在汽车导航系统市场中占据30%以上份额。 那么&am…

回归与聚类算法系列②:线性回归

目录 1、定义与公式 2、应用场景 3、特征与目标的关系分析 线性回归的损失函数 为什么需要损失函数 损失函数 ⭐如何减少损失 4、优化算法 正规方程 梯度下降 优化动态图 偏导 正规方程和梯度下降比较 5、优化方法GD、SGD、SAG 6、⭐线性回归API 7、实例&#…

Vue2项目练手——通用后台管理项目第七节

Vue2项目练手——通用后台管理项目 用户管理分页使用的组件Users.vuemock.js 关键字搜索区Users.vue 权限管理登录页面样式修改Login.vue 登录权限使用token对用户鉴,使用cookie对当前信息保存(类似localstorage)Login.vuerouter/index.js 登…

大屏开发,浏览器的可视区域和设备的分辨率

在线屏幕检测 - 显示器检测 - 显示器坏点检测工具

【三等奖方案】小样本数据分类任务赛题「复兴15号」团队解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路。 本方案为【小样本数据分类任务】赛题的三等奖获奖方案,赛题地址&#xff…

Vue2+Vue3基础入门到实战项目(七)——智慧商城项目

Vue 核心技术与实战 智慧商城 接口文档:https://apifox.com/apidoc/shared-12ab6b18-adc2-444c-ad11-0e60f5693f66/doc-2221080 演示地址:http://cba.itlike.com/public/mweb/#/ 01. 项目功能演示 1.明确功能模块 启动准备好的代码,演示…

Windows SQLYog连接不上VMbox Ubuntu2204 的Mysql解决方法

Windows SQLYog连接不上VMbox Ubuntu2204 的Mysql解决方法 解决方法: 1、先检查以下mysql的端口状态 netstat -anp|grep mysql如果显示127.0.0.1:3306 则说明需要修改,若为: : :3306,则不用。 在**/etc/mysql/mysql.conf.d/mysqld.cnf**&am…