hadoop架构总结(四)

hadoop架构总结(四)

摘自机械工业出版社出版的《hadoop大数据技术基础及应用》,个人学习总结。

zookeeper分布式协调服务

zookeeper是一个用在分布式集群的开源应用程序协调服务工具,基于Google的Chubby组件实现,主要功能是应对分布式应用的部分错误,如错误转移。

特点

  • 最终一致性,对于客户端来说,无论请求哪个Server最终呈现的是同一个视图。
  • 可靠性,如果一条消息被一台服务器接收,那么所有的服务器都会接收到该数据。
  • 实时性,在可容限的时间内获得服务器的最新状态,但是由于网路延迟的不确定性,在读消息前最好sync()更新一下数据。
  • 等待无关,客户端之间不能打断操作。
  • 原子性,zookeeper返回的信息要么成功要么失败,没有中间可能。
  • 顺序性,消息发布与接收保持顺序。

zookeeper架构

zookeeper自身组成一个集群(2n+1个服务器,允许n个服务器失效消息依然有效)。集群中存在Leader与Follower两种角色,Leader负责投票的发起和决议,更新系统状态,广播消息;Follower负责接受客户端的请求并将结果返回,在选举中投票。集群启动时在所有zookeeper节点中选择一个节点作为Leader,如果Leader失效后,在节点中再选一个作为Leader。

 

客户端可以连接到集群中的每个服务器(Follower),主服务器(Leader)与服务器保持通信,广播数据,服务器直接的数据保持同步。

工作原理

zookeeper的核心是原子广播,广播具有两种协议,一种是恢复模式,一种是广播模式。

恢复模式 集群启动或主服务器宕机后,进入恢复模式,重新推选Leader,当主服务器被选举出来,且大多数服务器的数据同步之后,结束恢复模式,广播消息进入广播模式。

广播模式 服务器接受客户端请求,所有的写数据请求被转发到主服务器,再由主服务器广播更新到集群的其他服务器。当半数以上的服务器完成数据写请求后,主服务器才会提交这个跟新,然后客户端接收响应。

zookeeper服务

数据模型

zookeeper维护一个树形结构,树中的节点称为znode存储数据,通过ACL来控制资源的访问权限。znode是客户端访问服务器的主体。

  1. 临时节点

    znode分为持久节点与临时节点。znode类型在创建时被确认不能改变。临时节点在客户端会话结束后被zookeeper删除。持久节点不依赖客户端,但是客户端可以删除,创建持久节点

  2. 顺序节点

    在创建节点时如果设置了顺序标识,znode名称后会生成一个单调递增的值。顺序号可以被表示为事件的顺序。

  3. 观察机制

    观察机制(watcher)是一种事件触发器。当被设置watcher的服务器发生变化时,watcher会通知客户端

zookeeper应用

zookeeper在分布式环境中保持数据强一致性。

数据发布与订阅

数据发布/订阅系统,就是将数据发布到zookeeper的一个或一系列节点上,共订阅者订阅数据,从而达到动态获取数据的效果。

发布/订阅系统一般有推(Push)和拉(Pull)两种模式,zookeeper结合两种方式进行:客户端向服务器注册节点,一旦该节点的数据发生改变,服务器通过watcher机制通知客户端数据更新,客户端收到通知后主动去zookeeper获取数据。

负载均衡

因为集群中服务器的数据都是一致的,所以客户端访问哪个服务器获取的最终数据也是一致的。

当收到一个请求时,根据服务器的负载情况进行任务分配。

分布式锁

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同系统或同一系统不同主机之间共享一个或一组资源,那么在访问这些资源时就需要一个互斥手段来保证数据一致性。

  1. 保持独占,同一时间内所有试图获取这个锁的客户端,最终只有一个可以成功获得这把锁,通过create znode的方式实现,谁将/distribute_lock节点创建成功谁就获得这把锁。
  2. 控制时序,将获取资源的客户端排序,区别在于/distribute_lock节点已经存在,排序的客户端依次在它的下面创建子节点来获得锁。
分布式队列
  1. 同步队列

    队列成员到齐才可用,否则等待。zookeeper在处理同步队列时,会先创建一个znode节点/queue作为队列,客户端提前对一个/go节点设置watcher。入队操作就是在/queue下创建子节点,当子节点数量到达队列预设值,创建/go节点,然后通知客户端队员到齐

2.FIFO

先进先出原则,事先创建FIFO节点作为队列,入队操作就是在FIFO节点下创建编号自增的子节点。出队操作就是找到小编号节点,依次取出数据删除节点。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值