Zookeeper开源的分布式协调服务框架

Zookeeper的概述

	zookeeper 是一个开源的分布式协调服务框架,主要用来解决分布式集群中的一致性问题和数据管理问题.

Zookeeper的特点

zookeeper本质上是一个分布式文件系统,适合存放小文件,可以理解为一个数据库.
zookeeper中存储的其实就是一个又一个Znode,Znode是Zookeeper中的节点。
正式因为Znode的特性,所有Zookeeper可以对外提供一个类似于文件系统的视图,可以通过操作文件系统的方式操作Zookeeper。

Zookeeper的应用场景

1. 数据发布/订阅
		数据发布/订阅系统,需要发布者将数据发布到Zookeeper的节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。
		发布和订阅一般有两种设计模式:推模式和拉模式、服务端主动将数据更新发送给所有订阅的客户端,称为推模式。客户主动请求获取数据称为拉模式。
		Zookeeper采用了推拉相结合的模式,客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变化,服务端就会向相应的客户端推送watch时间通知,客户端接收到通知 主动到服务端获取最新的数据。

2.  命名服务 
		通过命名服务,客户端可以根据指定名字获取资源的实体,在分布式环境中,上层应用仅仅需要一个全局唯一的名字。Zookeeper可以实现一套分布式全局唯一ID的分配机制。

zookeeper的命名服务

分布式协调/通知

		Zookeeper中特有的Watcher注册于异步通知机制,能够很好地实现分布式环境下不同机器,甚至不同系统之间的协调与通知,从而实现对数据变更的实时处理。通常的做法是不同客户端都对Zookeeper上的同一数据节点进行Watcher注册,监听数据节点的变化,如数据节点的数据发生变化,所有的客户端都能接收到相应的Watch通知,并作出相应的处理。
		在绝大多数的分布式系统中,系统季期间的通信无外乎心跳检测,工作进度汇报,和系统调度
		1.心跳检测:不同机器间需要检测到彼此是否在正常运行,可以使用Zookeeper时间机器间的心跳检测,基于零食节点特性,可以让不同机器都在Zookeeper的一个指定节点下创建临时子节点,不同机器之间可以根据这个临时子节点来判断对应的客户端机器是否存活。通过Zookeeper可以大大减少系统耦合性
		2.工作进度汇报:通常任务被分发到不同机器后,需要实时地将自己的任务执行进汇报给分发系统,可以在Zookeeper上选择一个节点,每个任务客户端都在这个节点下面创建临时子节点,这样不仅可以判断机器是否存活,同时各个机器可以将自己的任务执行进度写到该临时节点中去,以便中心系统能够实时获取任务的执行进度。
		3.系统调度,Zookeeper能够实现如下系统调度模式:分布式系统由控制台和一些客户端系统两部分构成,控制台的职责就是需要将一些指令信息发送给所有的客户端,以控制他们进行相应的业务逻辑,后台管理人员在控制台上做一些操作,实际上就是修改Zookeeper上某些节点的数据,Zookeeper可以把数据变更以时间通知的形式发送给订阅客户端。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值