Zookeeper的几个概念:(接下来将从这几个概念书写Zookeeper的内部工作流程)

  • 数据模型
  • 节点特性
  • 版本
  • Watcher
  • ACL 

<1> 数据模型:

  Zookeeper的视图很热Unix文件系统很像。但没有引入文件和文件目录相关概念;而是使用“数据节点”概念,称为ZNode;

  ZNode是ZK中最小的数据单元,每个ZNode上可以保存数据,也可以挂载子节点;即形成了一种层次化空间树;

     事务ID : ZK中,事务是指能够改变zk服务器状态的操作,一般包括数据节点创建与删除,数据节点内容更新和客户端会话创建与失效等操作;对于每一个事务请求,zk都会为其分配一个全局唯一的事务ID,用ZXID表示,是一个64位的数字;每一个ZXID对应一个事务操作;

<2> 节点特性:

  ZK中每个数据节点都是有生命周期;具体取决于数据节点的类型;

  节点类型可以分为:持久节点,临时节点,顺序节点;

  在节点的创建过程中,可以组合使用,于是有以下四种组合:

    (1)持久节点:该节点一旦被创建,就会一直存在于ZK服务器上,直到有删除操作来主动清除这个节点;

    (2)持久顺序节点:ZK中,每个父节点会为其第一级子节点维护一份顺序,用于记录下每个节点的先后顺序。

    (3)临时节点:临时节点生命周期和客户端会话绑定在一起,客户端会话失效,这个节点被自动清理掉。(客户端失效非TCP连接断开,另外不能基于临时节

            点创建子节点)。

    (4)临时顺序节点:特性和持久顺序节点类似;

     状态信息:zk上的数据节点进行数据的写入和子节点创建两个动作;一些状态说明:

      <1> czxid :Create ZXID :表示数据节点被创建时的事务ID;

      <2> mzxid: Modified ZXID :表示该节点最后一次被更新时的事务;

      <3> ctime : 节点创建时间。

        version,cversion,aversion等状态属性后续继续介绍

<3> 版本:(保分布式数据原子性操作)

  zk引入版本概念:每个数据节点都有三种类型的版本信息:

    (1)version :当前结点的数据内容版本号;

    (2)cversion:当前数据子节点的版本号;

    (3)aversion:当前数据节点ACL变更的版本号;

    以version为例:一个数据节点 /zk 被创建之后,节点的version值是0,代表 节点自创建以来被更新过 0 次;

     分布式领域-锁:一个乐观锁的事务控制分为三个阶段:数据读取,写入校验,数据写入;其中写入校验是整个乐观锁控制的关键所在。在写入校验阶段,事务会检查数据在读取阶段是否有其他事务对数据进行修改,确保数据的一致性;在zk中,使用这种版本号version来实现这种。通过获取当前version和version对比,保证两个版本匹配;

<4> Watcher 和 <5> ACL 内容较多,后续章节继续介绍!

  

Zookeeper内部实现分布式数据一致性(底层系统模型)(一)的更多相关文章

  1. 【分布式】Zookeeper系统模型

    一.前言 前面已经讲解了Zookeeper的一些应用场景,但是并没有深入到Zookeeper内部进行分析,本篇将讲解其系统模型. 二.系统模型 2.1 数据模型 Zookeeper的数据节点称为ZNo ...

  2. zookeeper系列(六)zookeeper的系统模型(数据树)

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6072597.html尊重作者原创,奇文共欣赏,大家共同学 ...

  3. 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)

    1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...

  4. 转: 透过CAT,来看分布式实时监控系统的设计与实现

    评注: 开源的分布式监控系统 转:http://www.infoq.com/cn/articles/distributed-real-time-monitoring-and-control-syste ...

  5. 透过CAT,来看分布式实时监控系统的设计与实现

    2011年底,我加入大众点评网,出于很偶然的机会,决定开发CAT,为各个业务线打造分布式实时监控系统,CAT的核心概念源自eBay闭源系统CAL----eBay的几大法宝之一. 在当今互联网时代,业务 ...

  6. Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

    参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分 ...

  7. Zookeeper 如何保证分布式系统数据一致性

    写在前面 分布式架构出现后,越来越多的分布式系统会面临数据一致性的问题.目前,ZooKeeper 是在解决分布式数据一致性上最成熟稳定且被大规模应用的工业级解决方案. ZooKeeper 保证 分布式 ...

  8. 案例 | 荔枝微课基于 kubernetes 搭建分布式压测系统

    王诚强,荔枝微课基础架构负责人.热衷于基础技术研发推广,致力于提供稳定高效的基础架构,推进了荔枝微课集群化从0到1的发展,云原生架构持续演进的实践者. 本文根据2021年4月10日深圳站举办的[腾讯云 ...

  9. [源码解析] PyTorch分布式优化器(3)---- 模型并行

    [源码解析] PyTorch分布式优化器(3)---- 模型并行 目录 [源码解析] PyTorch分布式优化器(3)---- 模型并行 0x00 摘要 0x01 前文回顾 0x02 单机模型 2.1 ...

随机推荐

  1. linux 配置ssh无密码登录不起作用的解决方案

    1.安装ssh 直接 sudo apt-get install openssh-server 2.查看ssh运行状态 ps -e | grep ssh 如果发现 sshd 和 ssh-agent 即表 ...

  2. 集成方法 Ensemble

    一.bagging 用于基础模型复杂.容易过拟合的情况,用来减小 variance(比如决策树).基础模型之间没有太多联系(相对于boosting),训练可以并行.但用 bagging 并不能有助于把 ...

  3. [转载]关于ActiveMQ集群

    转载于 http://blog.csdn.net/nimmy/article/details/6247289 近日因工作关系,在研究JMS,使用ActiveMQ作为提供者,考虑到消息的重要,拟采用Ac ...

  4. Eclipse高级操作 远程调试

    Eclipse高级操作 远程调试 JPDA是SUN JDK自带的远程调试机制.它提供了一套标准的调试接口,可以从虚拟机一级允许外界用特定协议探测虚拟机内部的运作细节.只要你装了JDK1.2以上的SUN ...

  5. html学习笔记整理

    网页 1.网页的组成部分 网页是由文字,图片,视频,音频,输入框,按钮这些元素(也就是html标签)组成. 2.浏览网页常用的五大主流浏览器 谷歌,IE,火狐,欧朋,safari.浏览器的内核(渲染引 ...

  6. pdf.js跨域加载文件

    pdf.js一个基于Html的工具类,熟悉pdf.js的朋友们很清楚,pdf.js帮助我们做了很多事.尤其金融类网站会产生很多的报表.需要在线预览.pdf.js绝对是我们的首选 本地预览 在pdf.j ...

  7. BFS-迷宫问题

    问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  8. .Net Mvc过滤器观察者模式记录网站报错信息

    基本介绍: 观察者模式是一种对象行为模式.它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.在观察者模式中,主题是通知的发布者,它发出通知时并不 ...

  9. [Spring cloud 一步步实现广告系统] 20. 系统运行测试

    系统运行 经过长时间的编码实现,我们的主体模块已经大致完成,因为之前我们都是零散的对各个微服务自行测试,接下来,我们需要将所有的服务模块进行联调测试,Let's do it. 清除测试数据&测 ...

  10. (17)ASP.NET Core EF基于数据模型创建数据库

    1.简介 使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序.使用迁移(Migrations)基于数据模型创建数据库,你可以在Windows上 ...