ZooKeeper是
Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:
- Watches are ordered with respect to other events, other watches, and
asynchronous replies. The ZooKeeper client libraries ensures that
everything is dispatched in order.
- A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.
- The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.
在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置 为EPHEMERAL,那么当这个创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里.Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理数 据.Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交.
那么Zookeeper能帮我们作什么事情呢?简单的例子:假设我们我们有个20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个 总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的 cgi(向总服务器发出搜索请求).搜索引擎的服务器中的15个服务器现在提供搜索服务,5个服务器正在生成索引.这20个搜索引擎的服务器经常要让正在 提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了.使用Zookeeper可以保证总服务器自动
感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,备用的总服务器宕机时自动启用备用的总服务器,web的cgi能够自动地获知总服务器的网络 地址变化.这些又如何做到呢?
- 提供搜索引擎的服务器都在Zookeeper中创建znode,zk.create("/search/nodes/node1",
"hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
- 总服务器可以从Zookeeper中获取一个znode的子节点的列表,zk.getChildren("/search/nodes", true);
- 总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表.
- 当总服务器接收到子节点改变的事件信息,重新返回第二步.
- 总服务器在Zookeeper中创建节点,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
- 备用的总服务器监控Zookeeper中的"/search/master"节点.当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点.
- web的cgi从Zookeeper中"/search/master"节点获取总服务器的网络地址数据并向其发送搜索请求.
- web的cgi监控Zookeeper中的"/search/master"节点,当这个znode的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址.
分享到:
相关推荐
分布式系统协调ZooKeeper是Apache软件基金会的一个开源项目,它主要设计用于构建高可用和高性能的分布式应用。在深入理解ZooKeeper之前,我们需要先理解分布式系统的基本概念。分布式系统是由多台计算机通过网络互相...
Zookeeper是分布式计算领域广泛使用的一个开源协调服务,它主要用于分布式系统中管理和同步配置信息、命名、提供分布式锁以及群组服务等。由于其在分布式系统中的核心地位,Zookeeper的性能和稳定性直接影响到整个...
ZooKeeper作为分布式系统的核心组件,其强大的协调能力使其在大数据、云计算等领域扮演着至关重要的角色。理解和掌握ZooKeeper的工作原理与使用技巧,对于提升分布式系统的开发和运维能力具有极大的帮助。通过深入...
Zookeeper的设计目标是简化分布式系统中的协调任务,使得开发者能够更专注于业务逻辑。 Zookeeper的核心概念包括节点(ZNode)、会话(Session)和观察者模式(Watcher)。ZNode是Zookeeper中的基本数据单元,类似...
Zookeeper提供了一种集中式的、高性能的服务,它以基于Paxos算法的ZAB(Zookeeper Atomic Broadcast)协议为核心,确保了在分布式系统中的强一致性。 Zookeeper的主要功能包括配置管理、域名服务、分布式同步和集群...
使用场景及目标:旨在帮助读者掌握ZooKeeper的基础理论知识和实际动手能力,能够熟练运用ZooKeeper解决分布式系统中的协同作业问题。 阅读建议:建议读者跟随教程逐步操作,亲身体验各个功能的实际效果,从而加深对...
分布式协调服务器Zookeeper是Apache的一款开源项目,设计用于构建分布式协调服务,它为分布式系统提供了一致性保障。Zookeeper的出现源于雅虎研究院的研究,后来成为Apache软件基金会的顶级项目。Zookeeper的核心...
### 分布式系统协调之ZooKeeper面试准备指南 #### ZooKeeper是什么? ZooKeeper是一个分布式协调服务,它主要用于简化复杂分布式系统中的开发任务。它提供了高性能和稳定性的基础架构,帮助开发者解决分布式环境中...
使用场景及目标:适用于需要构建和管理分布式系统的团队,帮助他们掌握 ZooKeeper 的基本用法,从而更好地实现一致性和配置管理等功能。 阅读建议:在学习过程中可以结合官方文档进行深入研究,并尝试在实际项目中...
Zookeeper的主要功能是为分布式系统提供一致性服务,它扮演着协调者角色,帮助处理分布式环境中的配置管理、域名服务、分布式同步以及集群管理等问题。Zookeeper的一致性是通过基于Paxos算法的ZAB(Zookeeper Atomic...
适合人群:对分布式系统管理有兴趣的技术人员,尤其是需要使用或维护基于Zookeeper的应用系统的开发者。 使用场景及目标:适用于准备搭建高可用性和稳定性的分布式应用系统的企业或者团队,在遇到节点状态同步、集群...
1. **命名服务**:Zookeeper可以作为一个全局的名字注册中心,使得分布式系统中的服务可以通过名字来查找和访问,避免了硬编码IP地址或域名导致的维护困难。 2. **配置管理**:在分布式系统中,配置管理是一个挑战...
Zookeeper 是一个分布式协调服务,常用于管理分布式系统的配置信息、命名服务、集群状态管理和分布式锁等场景。在Zookeeper中,每个数据单元被称为ZNode,具有类似文件系统的层级结构,可以存储数据并挂载子节点。...
Zookeeper 是一个高度可靠的分布式服务框架,由 Apache Hadoop 项目开发,旨在解决大型分布式系统中的数据管理问题。它的核心功能包括配置管理、命名服务、分布式同步和组服务,为分布式应用提供了强一致性、高可用...
为您提供ZooKeeper 分布式系统协调下载,ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易...
**ZooKeeper分布式系统协调详解** ZooKeeper是一款开源的分布式协调服务,它是由雅虎创建并贡献给Apache Software Foundation的项目。在分布式系统中,ZooKeeper扮演着至关重要的角色,它提供了一种可靠的方式来...
10. **源码分析**:对于学习和研究,Apache ZooKeeper的源码提供了深入理解分布式系统协调机制的机会,包括数据同步、故障恢复、选举算法等。 11. **毕业设计与论文**:在计算机科学的毕业设计或论文中,ZooKeeper...
《云计算》教材配套课件10章节主要探讨了分布式锁服务ZooKeeper,它是云计算领域中...通过阅读《云计算》这本教材,读者可以深入理解ZooKeeper在云计算领域的实践应用,并从中获取更多关于分布式系统协调的理论知识。