避免合作——一个简单易接近的动物园管理员

避免合作——一个简单易接近的动物园管理员
众所周知,分布式系统协作服务很难产生令人满意的产品。这些协同服务产品很容易陷入竞争选择条件或死锁等陷阱。动物园管理员是如何解决这个问题的?
zookeeper提供了一些简单的操作,因此分布式应用程序可以基于这些接口实现同步、配置维护2021有声小说大全和集群或命名等服务。zookeeper很容易以编程方式访问,它使用类似于文件树结构的数据模型。您可以使用java或c进行编程访问。其目的是使分布式服务不再因为协作冲突而需要实现协作服务。
本文内容:
1)动物园管理员数据模型
2)动物园管理员访问控制
3)动物园管理员应用场景
1.动物园管理员数据模型
zookeeper有一个名为空,非常类似于标准文件系统的层次结构
从图中可以看出,zookeeper的数据模型在结构上与标准文件系统非常相似,标准文件系统采用这种树层次结构,zookeeper树中的每个节点都称为-zno de。像文件系统的目录树一样,zookeeper树中的每个节点都可以有子节点。但也有不同之处:
1)参考方法:
zonde由路径引用,就像unix中的文件路径一样。路径必须是绝对的,所以它们必须以斜杠字符开头。此外,它们必须是唯一的,这意味着每个路径只有一个表示,因此这些路径不能更改。在动物园管理员中,路径由带有一些限制的unicode字符串组成。字符串& # 34;/动物园管理员& # 34;用于存储管理信息,如关键配额信息。
2) znode结构
zookeeper在空中命名为znode,它同时具有文件和目录特性。它不仅像文件一样维护数据、元信息、acl和时间戳等数据结构,还可以像目录一样用作路径标识的一部分。图中的每个节点都称为znode。每个znode由3部分组成:
这是状态信息,描述了znode的版本和权限。
l数据:与此znode关联的数据
子节点:这个节点下的子节点
zookeeper可以关联一些数据,但它不是作为常规数据库或大数据存储设计的。相反,它用于管理调度数据,如分布式应用程序中的配置文件信息、状态信息、收集位置等。这些数据的共同特征是它们都是非常小的数据,通常以千字节为单位。zookeeper的服务器和客户端被设计成严格检查和限制每个znode的数据大小至多为1m,但是在正常使用中它应该比这个值小得多。
3)数据访问
动物园管理员中每个节点存储的数据应该是原子操作的。也就是说,读操作将获得与该节点相关的所有数据,而写操作也将替换该节点的所有数据。此外,每个节点都有自己的acl(访问控制列表),它指定用户的权限,即限制特定用户可以在目标节点上执行的操作。
4)节点类型
持久节点:永久有效的节点,除非被客户端明确删除,否则始终存在。
临时节点:临时节点,仅当客户端在创建节点时保持连接时才有效。一旦连接断开,zookeeper将自动删除该节点。
序列节点:序列节点。当客户端申请创建这个节点时,zookeeper会自动在节点路径的末尾添加递增的序列号。这种类型是实现分布式锁和分布式队列等特殊功能的关键。
5)监控
客户端可以在节点上设置一个监视器,我们称之为监视器。当节点状态发生变化(znode的增加、删除和修改)时,会触发与观察对应的操作。当手表被触发时,动物园管理员将只向客户端发送一个通知,因为手表只能被触发一次,这可以减少网络流量。
动物园管理员可以为所有读取操作设置监视,包括:exists(),getchildren()和getdata()。手表事件是一次性的触发事件。当监视对象的状态改变时,将触发与该对象上的监视相对应的事件。观察事件将被异步发送给客户端,zookeeper为观察机制提供有序的一致性保证。理论上,客户端接收监视事件的时间比它看到监视对象状态变化的时间要快。
2.动物园管理员访问控制
在传统的文件系统中,acl分为两个维度,一个是组,另一个是权限。默认情况下,子目录/文件继承父目录的acl。在动物园管理员中,节点的acl没有继承关系,是独立控制的。动物园管理员的acl可以从三个维度来理解:第一,方案;二是用户;第三个是权限,通常表示为scheme:id:permissions。分别介绍了以下三个方面:
1)方案:方案对应哪个方案用于权限管理。zookeeper实现了一个可插拔的acl方案,它可以通过扩展方案来扩展acl机制。
方式
形容
世界
它下面只有一个本我,叫做任何人,任何人,世界:任何人代表任何人。动物园管理员中对每个人都有权限的节点属于世界:任何人
授权
已经过身份验证的用户
摘要
通过用户名的md5编码验证用户:密码字符串
宿主
匹配主机名后缀,例如,host:corp.com匹配host:host1.corp.com,host:host2.corp.com,但不能匹配host1.store.com
知识产权
用户由ip标识,表达式格式为addr/bit
2)用户:与方案密切相关,具体情况已经在上面介绍方案的过程中介绍过了,在此不再赘述。
3)权限:zookeeper目前支持以下权限:
许可
形容
评论
创造
拥有创建子节点的权限
阅读
有权读取节点数据和子节点列表

有权修改节点数据
没有创建和删除子节点的权限
删除
有权删除子节点
管理
有权设置节点权限
3.动物园管理员应用场景
1)数据发布和订阅(配置中心)
发布和订阅模式,即所谓的配置中心,顾名思义,就是发布者向zk节点发布数据,供订阅者动态获取数据,从而实现配置信息的集中管理和动态更新。例如,面向服务的服务框架的全局配置信息和服务地址列表非常适合使用。
2)分布式锁服务
分布式锁,这主要是由于动物园管理员对我们数据的强一致性。锁服务可以分为两类,一类是保持独占,另一类是控制计时。
3)分布式队列
有两种队列,一种是传统的先进先出队列,另一种是等待队列成员聚集在一起,然后再按顺序统一执行。第一个先入先出队列与分布式锁服务中控制时序场景的基本原理一致,因此这里不再重复。第二个队列实际上是基于先进先出队列的增强。
一般来说,可以在/queue节点下预先建立一个/queue/num节点,并分配n(或直接分配n给/queue),表示队列的大小。然后,每当队列成员加入时,就判断是否已经达到队列大小,并决定是否可以开始执行。这种用法的典型情况是,在分布式环境中,大型任务“任务a”只能在许多子任务完成时(或条件成熟时)执行。
此时,每当一个子任务完成(就绪)时,转到/tasklist来建立它自己的临时计时节点(createmode。短暂_连续)。当/tasklist发现其下的子任务数量达到指定数量时,可以按最好看的武侠小说顺序进行处理。
此时,您已经学会了安装hadoop集群,了解hdfs文件系统、mapreduce计算框架和zookeeper协作服务(zookeeper数据模型、访问控制、应用场景),下一篇文章将继续介绍高度可靠的分布式存储系统——hbbase。
至此,您已经掌握了hadoop的一半。
文章来源:www.atolchina.com