扫码加入千人跳槽求职QQ群,每日都有全国招聘信息哦

   

Zookeeper 是一种分布式的,开源的,应用于分布式应用的协作服务。它提供了一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务。Zookeeper 很容易编程接入,它使用了一个和文件树结构相似的数据模型。可以使用 Java 或者 C 来进行编程接入。

众所周知,分布式的系统协作服务很难有让人满意的产品。这些协作服务产品很容易陷入一些诸如竞争选择条件或者死锁的陷阱中。Zookeeper的目的就是将分布式服务不再需要由于协作冲突而另外实现协作服务。

本章内容:

1) Zookeeper 数据模型

2) Zookeeper 访问控制

3) Zookeeper 应用场景

1. Zookeeper 数据模型

ZooKeeper 拥有一个层次的命名空间,这个和标准的文件系统非常相似

从图中我们可以看出ZooKeeper的数据模型,在结构上和标准文件系统的非常相似,都是采用这种树形层次结构,ZooKeeper树中的每个节点被称为—Znode。和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。但也有不同之处:

1) 引用方式:

Zonde 通过路径引用,如同 Unix 中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在 ZooKeeper 中,路径由 Unicode 字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理信息,比如关键配额信息。

2) Znode 结构

ZooKeeper命名空间中的Znode,兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。图中的每个节点称为一个 Znode。每个 Znode 由 3 部分组成:

 stat:此为状态信息, 描述该 Znode 的版本, 权限等信息

 data:与该 Znode 关联的数据

 children:该 Znode 下的子节点

ZooKeeper虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以 KB 为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,但常规使用中应该远小于此值。

3) 数据访问

ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。

4) 节点类型

Persistent Nodes:永久有效地节点,除非client 显式的删除,否则一直存在。

Ephemeral Nodes:临时节点,仅在创建该节点 client 保持连接期间有效,一旦连接丢

失,zookeeper 会自动删除该节点。

Sequence Nodes:顺序节点,client 申请创建该节点时, ZooKeeper 会自动在节点路径末尾添加递增序号,这种类型是实现分布式锁,分布式 queue 等特殊功能的关键。

5) 监控

客户端可以在节点上设置 watch,我们称之为监视器。当节点状态发生改变时(Znode的增、删、改)将会触发 watch 所对应的操作。当 watch 被触发时,ZooKeeper 将会向客户端发送且仅发送一条通知,因为 watch 只能被触发一次,这样可以减少网络流量。

ZooKeeper可以为所有的读操作设置watch,这些读操作包括:exists()、getChildren()及 getData()。watch事件是一次性的触发器,当watch的对象状态发生改变时,将会触发此对象上watch所对应的事件。watch事件将被异步地发送给客户端,并且ZooKeeper为watch 机制提供了有序的一致性保证。理论上,客户端接收 watch 事件的时间要快于其看到 watch 对象状态变化的时间。

2. Zookeeper 问 访问 控制

传统的文件系统中,ACL 分为两个维度,一个是属组,一个是权限,子目录/文件默认继承父目录的 ACL。而在 Zookeeper 中,node 的 ACL 是没有继承关系的,是独立控制的。Zookeeper 的 ACL,可以从三个维度来理解:一是 scheme; 二是 user; 三是permission,通常表示为 scheme:id:permissions, 下面从这三个方面分别来介绍:

1) scheme: scheme 对应于采用哪种方案来进行权限管理,zookeeper实现了一个pluggable 的 ACL 方案,可以通过扩展 scheme,来扩展 ACL 的机制。

2) User:与 scheme 是紧密相关的,具体的情况在上面介绍 scheme 的过程都已介绍,这里不再赘述。

3) permission: zookeeper 目前支持下面一些权限:

3. Zookeeper 用 应用 场景

1) 数据发布与订阅(配置中心)

发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。

2) 分布式锁服务

分布式锁,这个主要得益于ZooKeeper为我们保证了数据的强一致性。锁服务可以分为两类,一个是保持独占,另一个是控制时序。

3) 分布式队列

队列方面,简单地讲有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。对于第一种先进先出队列,和分布式锁服务中的控制时序场景基本原理一致,这里不再赘述。第二种队列其实是在FIFO队列的基础上作了一个增强。通常可以在 /queue 这个 znode 下预先建立一个/queue/num 节点,并且赋值为 n(或者直接给/queue 赋值n),表示队列大小,之后每次有队列成员加入后,就判断下是否已经到达队列大小,决定是否可以开始执行了。这种用法的典型场景是,分布式环境中,一个大任务Task A,需要在很多子任务完成(或条件就绪)情况下才能进行。这个时候,凡是其中一个子 任 务 完 成 ( 就 绪 ), 那 么 就 去 /taskList 下 建 立 自 己 的 临 时 时 序 节 点(CreateMode.EPHEMERAL_SEQUENTIAL),当 /taskList 发现自己下面的子节点满足指定个数,就可以进行下一步按序进行处理了。

想进入微信群的可扫码,备注入群

转发到朋友圈是最高的赞赏

因为不是天生丽质,所以必须天生励志!

vs该文件没有与之关联的应用来执行该操作_Hadoop大数据实战系列文章之Zookeeper...相关推荐

  1. 计算机软件与程序没有任何关系,提示“该文件没有与之关联的程序来执行该操作”怎么解决?...

    最近有些网友反映到使用win10系统的电脑,在打开一些文件或者启动某些程序时,会出现"该文件没有与之关联的程序来执行该操作"的提示,如:当我们单击文件,或者单击桌面显示设置.个性化 ...

  2. 解决win7“该文件没有与之关联的程序来执行该操作”

    机器装好了win7系统.右击"计算机"管理的时候,出现"该文件没有与之关联的程序来执行该操作" 能是因为删除了start menu下的某个文件,经过分析,找到了 ...

  3. 完美解决win10打不开设置,右键个性化显示设置等就出现,该文件没有与之关联的程序来执行该操作。

    win10打不开设置,右键个性化显示设置等就出现,该文件没有与之关联的程序来执行该操作. 解决方式之一: Win+R,输入regedit,定位到HKEY_CURRENT_USER\Software\C ...

  4. 【打开方式问题解决】该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置“页面中创建关联。

    问题描述 最近用了某款编辑右键菜单工具,清理了下冗长的右键内容,但是却出现了另一个奇奇怪怪的问题,就是对某一类型文件,在右键后,点击[打开方式]->[选择其他应用],会弹出[该文件没有与之关联的 ...

  5. 该文件没有与之关联的程序来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置“页面中创建关联

    Windows系统,点击任务栏锁住软件显示:该文件没有与之关联的程序来执行该操作.请安装应用,若已经安装应用,请在"默认应用设置"页面中创建关联. 原因:删除快捷方式小箭头导致的 ...

  6. win10 该文件没有与之关联的应用来执行该操作。请安装应用...

    记一次重装win10系统时,把系统换成了 win10 1903版本,重装系统之后,正常安装软件,当打开任务栏下此软件的快捷方式时出现 该文件没有与之关联的应用来执行该操作.请安装应用,若已经安装应用, ...

  7. WIN10之右键“管理”报错:该文件没有与之关联的程序来执行该操作,请安装一个程序,或者,如果已安装程序.....

    在网上找不到较好的解决方法,但是又影响操作,通过自己排查出来的解决方式.之前一直通过win+R 输入"sysdm.cpl"调出管理界面. 故障提示: win10系统,此电脑(我的电 ...

  8. 该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装,请在“默认应用置”解决办法

    该文件没有与之关联的应用来执行该操作.请安装应用,若已经安装,请在"默认应用置"解决办法 某一天桌面快捷方式无法打开,某些安装包无法安装,点击后出现题目描述的错误问题.在网上找了第 ...

  9. win10系统 该文件没有与之关联的应用来执行该操作,请安装应用,若已经安装应用,请在“默认应用设计“页面中创建关联

    !!!注意 ,这个解决了我的问题, 但是不敢保证能不能解决你们的问题- 点击任务栏的资源管理器出现: 该文件没有与之关联的应用来执行该操作,请安装应用,若已经安装应用,请在"默认应用设计&q ...

最新文章

  1. 2022-2028年中国体育用品行业投资分析及前景预测报告(全卷)
  2. [原译]理解并实现生成器模式
  3. 如何在 Linux 上用 SQL 语句来查询 Apache 日志
  4. 吞吐量达到瓶颈后下降_如何找到 Kafka 集群的吞吐量极限?
  5. 生病了女朋友说要「陪床」,结果真的是陪床不是陪我......
  6. 任务管理与项目管理:哪一个最适合你的团队?
  7. Vue3.0中文文档(Vue3 + TS学习资源路线)
  8. 汽车电子中的2520贴片晶振
  9. 计算机网络双绞线和交叉线的区别,直连线和双绞线有什么区别?
  10. 全球与中国Epicor渠道合作伙伴市场现状及未来发展趋势
  11. 杭州证历本如何使用_药店也可以用
  12. 棋牌麻将 - 常用胡牌规则解释及汇总
  13. 竞品分析:腾讯课堂vs中国大学MOOC(从用户体验五要素角度)
  14. 你还在为校园内丢失东西无处可寻而发愁吗?速戳进来
  15. 你的春节放假通知邮件发送了吗?邮件自动回复设置
  16. js将图片/文件等资源保存(下载)到本地
  17. Shell Tools and Scripting
  18. 零基础 Python学习
  19. 高斯径向基函数的理解
  20. 交换机网管方式有哪些?

热门文章

  1. carla安装之clang版本问题
  2. 迈向人工通用智能与混合天玑芯片架构
  3. 蔚来测开提前批面试(一面)
  4. WORD各个章节批量另起一页?
  5. ajax struts 返回html,Struts2+ajax 异步请求,向前段返回字符串
  6. java单链表_(java实现)单链表
  7. photozoompro 8 解锁代码_能够在手机上实现代码编写的APP——Pydroid 3
  8. mysql数据库查询源码_超简单php mysql数据库查询类
  9. 自适应 幻灯片代码 app_低成本0基础开发app之开发首页幻灯片接口
  10. linux应用程序原理,LINUX原理及应用:第15章 XWindow及Genie应用程序