zookeeper:一个分布式协调框架,主要用在集群管理,分布式应用配置管理等。

核心机制:

  • 文件系统数据结构
  • 监听通知机制

文件系统数据结构

每个子目录都被称为znode(目录节点),node分四种类型,如下:

  • 持久化目录节点:只要不删除,永远存在;
127.0.0.1:2181   $   create /z/a
Created /z/a
127.0.0.1:2181  $   ls /z
[a]
  • 持久化顺序目录节点:比持久化目录节点多一个顺序编号;
127.0.0.1:2181   $   create -s /z/c
Created /z/c0000000003
127.0.0.1:2181  $   create -s /z/d
Created /z/d0000000004
127.0.0.1:2181  $   ls /z
[a, b, c0000000003, d0000000004]
  • 临时目录节点:zookeeper断开连接后删除;
127.0.0.1:2181   $   create -e /z/b
Created /z/b
127.0.0.1:2181  $   ls /z
[a, b]
127.0.0.1:2181  $   get /z/bcZxid = 0x504578ae2
ctime = Mon May 17 17:11:29 CST 2021
mZxid = 0x504578ae2
mtime = Mon May 17 17:11:29 CST 2021
pZxid = 0x504578ae2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x109175e11652938
dataLength = 0
numChildren = 0
  • 临时顺序目录节点:zookeeper断开连接后删除,带有顺序编号
127.0.0.1:2181   $   create -s -e /z/f
Created /z/f0000000005
127.0.0.1:2181  $   ls /z
[a, b, f0000000005, c0000000003, d0000000004]
127.0.0.1:2181  $   get /z/f0000000005cZxid = 0x504579425
ctime = Mon May 17 17:15:58 CST 2021
mZxid = 0x504579425
mtime = Mon May 17 17:15:58 CST 2021
pZxid = 0x504579425
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x109175e11652938
dataLength = 0
numChildren = 0
  • 容器节点:如果容器节点下面没有子节点,则zookeeper会定时清除
  • TTL节点:过了TTL指定时间,会被服务器删除

监听通知机制

官网解释:zookeeper支持监听,客户端可以在znode上设置监听,znode更改时,触发通知并删除监视。触发监听后,客户端后收到数据,说明znode已经更改。理解如下:

  1. 若监听某个节点,则该节点变动时,客户端将被通知;
  2. 若监听某个目录,则该目录下有节点变动时,客户端将被通知;
  3. 若递归监听某个目录,则该目录下任一子节点变动时,客户端将被通知。
  4. 所有通知都是一次性的,通知完删除监听。

Zookeeper内存数据和持久化

zookeeper为文件系统数据结构,而这些数据是存储在内存中,所以可以把zookeeper看成基于内存的小型数据库。

数据快照

数据快照用于记录Zookeeper服务器上某一时刻的全量数据,并将其写入到指定的磁盘文件中。

初试Zookeeper---概念篇相关推荐

  1. ORM查询语言(OQL)简介--概念篇

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  2. android 电容屏(二):驱动调试之基本概念篇

    关键词:android  电容屏 tp 工作队列 中断 多点触摸协议 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  平台:S5PV310(sams ...

  3. 人工智能 | 自动驾驶与人工智能前沿研究报告(概念篇)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================= ...

  4. 人工智能 | 人脸识别研究报告(概念篇)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================= ...

  5. 人工智能 | 自然语言处理研究报告(概念篇)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================= ...

  6. JavaScript高级程序设计之基本概念篇

    日子天天过,啥都能忘,学习不能忘.<JavaScript高级程序设计>这本书之前看过,但是只看了js的部分,其余部分并没有看.当时想,看看js部分应该够用了,但最近看了篇文章,受到了很深的 ...

  7. Linux Capabilities 入门教程--概念篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  8. Hugepages你用了吗?--原理概念篇

    Hugepages你用了吗?----原理概念篇 Hugepages你用了吗?----测试案例篇      引子 系统进程是通过虚拟地址访问内存,但是CPU必须把它转换程物理内存地址才能真正访问内存.为 ...

  9. 论“前置测试模型”-1 概念篇

    最近几期上层一直在推一个测试理念-前置测试模型,由于当时时间很忙并且刚刚入职,只是跟着团队的大方向找着感觉,这几天看了一篇介绍前置测试模型的资料,结合当前的工作感悟,想在此记录一些自己对其的肤浅认识. ...

  10. java lambda 排序_Java8特性:Lambda表达式之概念篇

    Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本.而Java8最大的特性就是:Lambda表达式.函数式接口和Stream流. 本篇我只介绍 ...

最新文章

  1. 第二阶段团队项目冲刺站立会议(九)
  2. React Native学习(七)—— FlatList实现横向滑动列表效果
  3. selenium如何在同一个窗口页面中返回上一个页面窗口(Python)。
  4. 服务器网卡的连接速度改成自动检测_ubuntu xftp,ubuntu xftp之间怎么连接,连接步骤...
  5. PHP后台处理jQuery Ajax跨域请求问题 — xx was not called解决办法
  6. raptor累乘流程图_Markdown快速上手指南
  7. 80-10-010-原理-Java NIO-简介
  8. 转:完全卸载Oracle方法
  9. DWR Sample
  10. python继承的写法_python – 从框架继承或不继承Tkinter应用程序
  11. android BaseFragment获取Context上下文方法
  12. 越做越好的adobe acrobat
  13. 梯度消失的有效解决方法-batch normalization
  14. ​使用 QuickBI 搭建酷炫可视化分析
  15. java实现同步的几种方式(总结)
  16. 数据库和数据库实例的概念
  17. 《植物大战僵尸》游戏存档修改
  18. 今日头条一个身份证可以注册几个头条号
  19. 拼多多竞价成功后多久有流量?万顿思教育
  20. C语言之到底是不是太胖了

热门文章

  1. 关于SOTIF预期功能安全的理解
  2. 写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。
  3. 如何在windows上使用VMware安装macOS虚拟机
  4. Feasibility of Learning
  5. 元宵快乐!!!! 自己做的贺卡。。 :)
  6. 人工智能--技术发展史
  7. 计算机二级52条基础知识考点
  8. 判断一个点是否在闭合曲线内
  9. 【壁纸】动漫绝美壁纸
  10. 百度站长平台"添加站点"提示"您无权访问该页面,点击确定按钮返回首页?"