前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ZooKeeper入门——ZooKeeper系列(二)

ZooKeeper入门——ZooKeeper系列(二)

原创
作者头像
翰墨飘香
发布于 2025-02-07 14:50:10
发布于 2025-02-07 14:50:10
1421
举报

一、什么是ZooKeeper?

Apache ZooKeeper 是一个开源的分布式协调服务,由知名互联网公司雅虎创建。ZooKeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。ZooKeeper可以保证如下分布式一致性特性。

ZooKeeper 一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。 服务生产者将自己提供的服务注册到ZooKeeper中心,服务的消费者在进行服务调用的时候先到ZooKeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。如下图所示,在 Dubbo架构中 ZooKeeper 就担任了注册中心这一角色

参考:

漫画:什么是ZooKeeper?

可能是把 ZooKeeper 概念讲的最清楚的一篇文章

二、ZooKeeper数据模型

ZooKeeper将所有数据存储在内存中,数据模型是是一种树的结构(Znode Tree),非常像电脑的文件夹,有一个根文件夹,下面还有很多子文件夹;

树是由节点所组成,ZooKeeper的数据存储也同样是基于节点,这种节点叫做Znode

ZooKeeper的数据模型也具有一个固定的根节点(/),我们可以在根节点下创建子节点,并在子节点下继续创建下一级节点。ZooKeeper 树中的每一层级用斜杠(/)分隔开,且只能用绝对路径(如“get /work/task1”)的方式查询 ZooKeeper 节点,而不能使用相对路径

三、ZooKeeper基本概念

(一)Znode

1. Znode组成

data:Znode存储的数据信息

ACL:记录Znode的访问权限,即哪些人或哪些IP可以访问本节点

child:当前节点的子节点引用,类似于二叉树的左孩子右孩子

stat:包含Znode的各种元数据,比如事务ID、版本号、时间戳、大小等等

需要注意,ZooKeeper是为读多写少的场景所设计。Znode并不是用来存储大规模业务数据,而是用于存储少量的状态和配置信息,每个节点的数据最大不能超过1MB

2. Znode节点类型

持久节点

该节点的生命周期不依赖于会话,该数据节点会一直存储在 ZooKeeper 服务器上,即使创建该节点的客户端与服务端的会话关闭了,该节点依然不会被删除。并且只有在客户端显示执行删除操作的时候,他们才能被删除

临时节点

该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然也可以手动删除

有序节点

有序节点并不算是一种单独种类的节点,而是在之前提到的持久节点和临时节点特性的基础上,增加了一个节点有序的性质。所谓节点有序是说在我们创建有序节点的时候,ZooKeeper 服务器会自动使用一个单调递增的数字作为后缀,追加到我们创建节点的后边。例如一个客户端创建了一个路径为 works/task- 的有序节点,那么 ZooKeeper 将会生成一个序号并追加到该节点的路径后,最后该节点的路径为 works/task-1。通过这种方式我们可以直观的查看到节点的创建顺序

(二)ACL

ZooKeeper采用ACL(Access Control Lists)策略来进行权限控制,类似于UNIX文件系统的权限控制。ZooKeeper设置了5种权限

  • CREATE:创建子节点的权限
  • READ:获取节点数据和子节点列表的权限
  • WRITE:更新节点数据的权限
  • DELETE:删除子节点的权限
  • ADMIN:设置节点ACL的权限 其中注意 CREATE和DELETE这两种都是针对子节点的权限控制。

(三)Watcher

Watcher(事件监听)允许用户在制定节点上注册一些Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端上,该机制是ZooKeeper实现分布式协调服务的重要特性。

(四)会话Session

Session 指的是 ZooKeeper  服务器与客户端会话。在 ZooKeeper 中,一个客户端连接是指客户端和服务器之间的一个 TCP 长连接。ZooKeeper对外的服务端口默认是2181,客户端启动的时候,首先会与服务器建立一个 TCP 连接,从第一次连接建立开始,客户端会话的生命周期也开始了。通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向Zookeeper服务器发送请求并接受响应,同时还能够通过该连接接收来自服务器的Watch事件通知。 Session的sessionTimeout值用来设置一个客户端会话的超时时间。当由于服务器压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在sessionTimeout规定的时间内能够重新连接上集群中任意一台服务器,那么之前创建的会话仍然有效。在为客户端创建会话之前,服务端首先会为每个客户端都分配一个sessionID。由于 sessionID 是 Zookeeper 会话的一个重要标识,许多与会话相关的运行机制都是基于这个 sessionID 的,因此,无论是哪台服务器为客户端分配的 sessionID,都务必保证全局唯一。

(五)集群角色

  • Leader 领导者 为客户端提供读写服务
  • Follower 提供读服务,在选举过程中参与投票
  • Observer 提供读服务,不参与Leader选举过程,也不参与些操作“过半写成功”策略,因此Observer可以在不影响写性能的情况下提升集群读性能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬来互粉一个
可以,大佬来互粉一个
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
分布式进阶__详解zookeeper的配置文件
initLimit=10  follower节点启动后与leader节点完成数据同步的时间
矿泉水
2018/05/11
8781
分布式进阶__详解zookeeper的配置文件
Zookeeper 简述
ZooKeeper 是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
俺也想起舞
2019/07/24
4550
Zookeeper
即所谓的配置中心.发布订阅一般有两种设计模式,分别为: Push模式和Pull模式. ZK采用推拉模式相结合的方式: 客户端向服务端注册自己需要监听的节点,一旦该节点数据发生变更,服务端向客户端发送Watcher事件通知,客户端收到通知之后主动向服务端获取最新数据. 基于ZK配置中心的配置信息有如下特点:
spilledyear
2020/02/18
1.5K0
Zookeeper
大白话带你认识 ZooKeeper !重要概念一网打尽!
相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢?
Guide哥
2020/08/28
5480
2019年面试官最喜欢问的28道ZooKeeper面试题
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
程序员追风
2020/01/14
5200
2019年面试官最喜欢问的28道ZooKeeper面试题
ZooKeeper面试题(2020最新版)
文章目录 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. Zookeeper 怎么保证主从节点的状态同步? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客户端回调 Watcher 10. ACL 权限控制机
Java架构师必看
2020/04/10
4.1K0
ZooKeeper入门,这一篇给你讲的明明白白
面试常常被要求「熟悉分布式技术」,当年搞 “XXX管理系统” 的时候,我都不知道分布式系统是个啥。分布式系统是一个硬件或软件组件分布在不同的网络计算机中上,彼此之间仅仅通过消息传递进行通信和协调的系统。
海星
2020/09/15
5K0
『互联网架构』软件架构-zookeeper快速入门(33)
PS:重点原理和基本命令。Zookeeper 是一个有上下级关系(Leader 、follower 、Observer )的集群。客户端链接 zookeeper 集群是通过 Seesion 链接(TCP 长链接)。客户端链接以后可以对节点(存储在 zookeeper 上 znode)增删改查。Znode 有四种类型:临时、临时有序、持久、持久有序对(znode)节点做增删改查时我们可以监控其动作(Watcher 机制)还可以对节点设置权限访问。
IT架构圈
2019/03/19
4560
『互联网架构』软件架构-zookeeper快速入门(33)
一文了解Zookeeper
相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?
用户1263954
2018/12/18
6910
一文了解Zookeeper
可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章
相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?
用户2164320
2018/09/11
8340
可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章
【云原生进阶之PaaS中间件】第二章Zookeeper-1-综述
        ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。
江中散人_Jun
2023/10/16
4870
【云原生进阶之PaaS中间件】第二章Zookeeper-1-综述
Zookeeper
ZooKeeper本身是分布式的,是一个为分布式应用提供协调服务的一个Apache项目,常用于注册中心
晚上没宵夜
2022/05/09
8790
Zookeeper
Zookeeper基本概念
Zookeeper是一个分布式协调服务,分布式应用程序可以基于它来实现注入数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举和分布式锁等功能。
张申傲
2020/09/03
3620
Zookeeper基本概念
小白初识Zookeeper
首先,了解一个Zookeeper是什么,其是一个开源的分布式协调服务,分布式数据一致性的解决方案。
Liusy
2020/09/01
4740
小白初识Zookeeper
【年后跳槽必看篇-非广告】一文带你吃透Zookeeper
我们如果在面试过程中,如果要是聊到Zookeeper,同时你有很懂Kafka,那么恭喜你就可以由此为切入点,然后开始大杀特杀了。
@派大星
2024/01/17
3380
【年后跳槽必看篇-非广告】一文带你吃透Zookeeper
Dubbo(二) 认识Zookeeper
前言 在昨天,我们给大家基本介绍了Dubbo,文中反复提到了Zookeeper,那么它到底是什么呢,这篇文章我们将从Dubbo层面去了解Zookeeper,不做全面讲解,毕竟这是Dubbo教程啊~ Zookeeper的概念 官方给出的文档显示: ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:分布式锁服务。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通知/协调等。
生活创客
2018/01/30
8100
Dubbo(二) 认识Zookeeper
Zookeeper系统模型结构分析
综上所述,Zookeeper的系统模型结构是一个高度可扩展、高可用的分布式协调服务系统,它利用树形数据结构、多种节点类型、事务ID、Watcher机制和集群技术来支持各种分布式应用的需求。
会洗碗的CV工程师
2024/05/13
3080
Zookeeper系统模型结构分析
软件架构-zookeeper快速入门
•⑫ Leader 选举流程 LOOKING, FOLLOWING, LEADING, OBSERVING
IT架构圈
2021/08/24
3760
Zookeeper面试题36问,又能和面试官多扯半个小时了
Basically Available(基本可用)、Soft state(软状态) 和 Eventuanlly consistent (最终一致性)3个短语的简写。
Java小咖秀
2020/06/23
1.4K0
Zookeeper面试题36问,又能和面试官多扯半个小时了
图解ZooKeeper的典型应用场景
zookeeper在很多框架中都有应用,例如:Dubbo,Hadoop,Kafka等,但典型的用法也就几种,掌握了这几种用法,再看zookeeper在相关框架中的应用就很轻松,下一篇文章将会详细介绍zookeeper在dubbo中的使用,以便有一个更深刻的了解
Java识堂
2019/08/13
5420
相关推荐
分布式进阶__详解zookeeper的配置文件
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档