Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是zookeeper脱离hadoop的范畴开发分布式框架的应用越来越多。
Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统?理由如下:
开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”。“部分失败”是指信息在网络的两个节点之间传送时候,如果网络出了故障,发送者无法知道接收者是否收到了这个信息,而且这种故障的原因很复杂,接收者可能在出现网络之前已经收到了信息,也可能没有收到,又或接受者的进程死掉了。发送者能够获得真实情况的唯一办法就是重新连接到接收者,询问接收者错误的原因,这就是分布式系统开发里的“部分失败”问题。
Zookeeper就是解决分布式系统“部分失败”的框架。Zookeeper不是让分布式系统避免“部分失败”问题,而是让分布式系统当碰到部分失败时候,可以正确处理此类问题,让分布式系统能正常的运行。
zookeeper的实际运用场景:
场景一:有一组服务器向客户端提供某种服务(例如:我前面做的分布式网站的服务端,就是由四台服务器组成的集群,向前端集群提供服务),我们希望客户端每次请求服务端都可以找到服务端集群中某一台服务器,这样服务端就可以向客户端提供客户端所需的服务。对于这种场景,我们的程序中一定有一份这组服务器的列表,每次客户端请求时候,都是从这份列表里读取这份服务器列表。那么这分列表显然不能存储在一台单节点的服务器上,否则这个节点挂掉了,整个集群都会发生故障,我们希望这份列表时高可用的。高可用的解决方案是:这份列表是分布式存储的,它是由存储这份列表的服务器共同管理的,如果存储列表里的某台服务器坏掉了,其他服务器马上可以替代坏掉的服务器,并且可以把坏掉的服务器从列表里删除掉,让故障服务器退出整个集群的运行,而这一切的操作又不会由故障的服务器来操作,而是集群里正常的服务器来完成。这是一种主动的分布式数据结构,能够在外部情况发生变化时候主动修改数据项状态的数据机构。Zookeeper框架提供了这种服务。这种服务名字就是:统一命名服务,它和javaEE里的JNDI服务很像。
场景二:分布式锁服务。当分布式系统操作数据,例如:读取数据、分析数据、最后修改数据。在分布式系统里这些操作可能会分散到集群里不同的节点上,那么这时候就存在数据操作过程中一致性的问题,如果不一致,我们将会得到一个错误的运算结果,在单一进程的程序里,一致性的问题很好解决,但是到了分布式系统就比较困难,因为分布式系统里不同服务器的运算都是在独立的进程里,运算的中间结果和过程还要通过网络进行传递,那么想做到数据操作一致性要困难的多。Zookeeper提供了一个锁服务解决了这样的问题,能让我们在做分布式数据运算时候,保证数据操作的一致性。
场景三:配置管理。在分布式系统里,我们会把一个服务应用分别部署到n台服务器上,这些服务器的配置文件是相同的(例如:我设计的分布式网站框架里,服务端就有4台服务器,4台服务器上的程序都是一样,配置文件都是一样),如果配置文件的配置选项发生变化,那么我们就得一个个去改这些配置文件,如果我们需要改的服务器比较少,这些操作还不是太麻烦,如果我们分布式的服务器特别多,比如某些大型互联网公司的hadoop集群有数千台服务器,那么更改配置选项就是一件麻烦而且危险的事情。这时候zookeeper就可以派上用场了,我们可以把zookeeper当成一个高可用的配置存储器,把这样的事情交给zookeeper进行管理,我们将集群的配置文件拷贝到zookeeper的文件系统的某个节点上,然后用zookeeper监控所有分布式系统里配置文件的状态,一旦发现有配置文件发生了变化,每台服务器都会收到zookeeper的通知,让每台服务器同步zookeeper里的配置文件,zookeeper服务也会保证同步操作原子性,确保每个服务器的配置文件都能被正确的更新。
场景四:为分布式系统提供故障修复的功能。集群管理是很困难的,在分布式系统里加入了zookeeper服务,能让我们很容易的对集群进行管理。集群管理最麻烦的事情就是节点故障管理,zookeeper可以让集群选出一个健康的节点作为master,master节点会知道当前集群的每台服务器的运行状况,一旦某个节点发生故障,master会把这个情况通知给集群其他服务器,从而重新分配不同节点的计算任务。Zookeeper不仅可以发现故障,也会对有故障的服务器进行甄别,看故障服务器是什么样的故障,如果该故障可以修复,zookeeper可以自动修复或者告诉系统管理员错误的原因让管理员迅速定位问题,修复节点的故障。大家也许还会有个疑问,master故障了,那怎么办了?zookeeper也考虑到了这点,zookeeper内部有一个“选举领导者的算法”,master可以动态选择,当master故障时候,zookeeper能马上选出新的master对集群进行管理。
下面讲讲zookeeper的特点:
1.zookeeper是一个精简的文件系统。这点它和hadoop有点像,但是zookeeper这个文件系统是管理小文件的,而hadoop是管理超大文件的。
2.zookeeper提供了丰富的“构件”,这些构件可以实现很多协调数据结构和协议的操作。例如:分布式队列、分布式锁以及一组同级节点的“领导者选举”算法。
3.zookeeper是高可用的,它本身的稳定性是相当之好,分布式集群完全可以依赖zookeeper集群的管理,利用zookeeper避免分布式系统的单点故障的问题。
4.zookeeper采用了松耦合的交互模式。这点在zookeeper提供分布式锁上表现最为明显,zookeeper可以被用作一个约会机制,让参入的进程不在了解其他进程的(或网络)的情况下能够彼此发现并进行交互,参入的各方甚至不必同时存在,只要在zookeeper留下一条消息,在该进程结束后,另外一个进程还可以读取这条信息,从而解耦了各个节点之间的关系。
5.zookeeper为集群提供了一个共享存储库,集群可以从这里集中读写共享的信息,避免了每个节点的共享操作编程,减轻了分布式系统的开发难度。
6.zookeeper的设计采用的是观察者的设计模式,zookeeper主要是负责存储和管理大家关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。
分享到:
相关推荐
ZooKeeper经典应用场景 ZooKeeper是一个高可用的分布式系统,广泛应用于分布式锁、服务注册中心等场景。下面将对ZooKeeper在经典应用场景中的知识点进行详细说明。 分布式锁 在分布式集群工作的开发场景中,需要...
ZooKeeper应用 ZooKeeper广泛应用于分布式系统中,例如Hadoop的分布式协调服务、HDFS NameNode的高可用性、MapReduce JobTracker的高可用性、YARN ResourceManager的高可用性、HBase Hmaster Active的高可用性、...
3. **Zookeeper 应用场景** - **配置管理**:分布式系统中,可以将配置信息存储在 Zookeeper 上,各个服务节点通过 Watcher 监听配置变化,实现实时更新。 - **命名服务**:Zookeeper 可以作为服务发现的注册中心...
ZooKeeper 的应用场景包括: 1. 命名服务:ZooKeeper 可以提供命名服务,通过指定的名字来获取资源或者服务的地址。 2. 配置管理:ZooKeeper 可以提供配置管理,程序分布式的部署在不同的机器上,将程序的配置信息...
**分布式应用的优点** 1. **可扩展性**:分布式应用可以轻松扩展到更多的服务器,处理更大的负载。 2. **高可用性**:通过复制和故障转移,即使部分组件失败,系统仍能继续运行。 3. **资源利用率**:通过分布式处理...
**Zookeeper的应用场景** 1. **配置中心**: 多个服务可以共享同一份配置,当配置更新时,所有服务都会收到通知并更新。 2. **命名服务**: 提供分布式环境下的全局唯一ID生成,如分配服务实例的唯一ID。 3. **集群...
ZooKeeper的优点包括: 高可靠性:ZooKeeper是一个高可靠的分布式协调服务,可以保证数据的一致性和完整性。 可扩展性:ZooKeeper支持动态扩展和缩减,可以根据需求调整资源的分配。 易用性:ZooKeeper提供了简单的...
Zookeeper 的应用场景非常广泛,包括: * 分布式数据库:Zookeeper 可以用来管理分布式数据库中的数据一致性和正确性。 * 分布式文件系统:Zookeeper 可以用来管理分布式文件系统中的文件元数据。 * 云计算平台:...
**应用场景:** Zookeeper广泛应用于Hadoop、Storm、消息中间件、RPC服务框架和分布式同步系统中。它的设计使得它适合于管理配置、实现命名服务、提供分布式锁、处理集群成员关系等。然而,由于其并非设计为大规模...
分布式一致性原理与实践》,我们不仅了解了Paxos算法的基本思想以及其在解决分布式一致性问题上的重要作用,还深入了解了Zookeeper这一高效可靠的协调服务框架是如何在实际场景中应用这些理论知识的。无论是对于理论...
五、Zookeeper集群的应用场景 * 分布式锁:Zookeeper可以用于实现分布式锁,防止多个节点同时访问共享资源。 * 配置管理:Zookeeper可以用于管理分布式系统的配置文件和参数。 * 名称服务:Zookeeper可以用于提供...
Zookeeper和Redis都是大数据领域中常用的工具,它们各自有着独特的功能和应用场景。 Zookeeper是由Apache Hadoop项目开发的一个分布式协调服务,它提供了一种集中式的服务,用于配置管理、命名服务、分布式同步和组...
- **应用场景**:适用于需要高可用性和高性能的分布式应用环境。 #### 应用场景 ZooKeeper可以应用于多种协调场景,包括但不限于: - **配置管理**:存储和分发系统配置信息。 - **命名服务**:为服务实例提供...
这两种算法在实际应用中都有各自的优点,Fast Paxos因其更高的效率而成为Zookeeper的默认选择。 综上所述,Zookeeper的安全管理机制是确保其在分布式环境中稳定运行的关键因素。通过对配置参数、设计目标、工作原理...
"fs-config"可能是开发者自定义的一个配置管理系统,或者是一个特定场景下的配置工具。它可能利用Zookeeper的强大功能,为分布式文件系统或其他相关服务提供动态配置管理。通过Zookeeper,fs-config可能实现了以下...
面试中,了解Zookeeper的数据模型(节点、watcher机制)、选举算法、会话和操作API、Zookeeper在分布式锁、服务发现、配置中心等应用场景的使用是必要的。 以上五项技术在大型互联网公司的实际项目中都有广泛应用,...
Curator提供了封装ZooKeeper client与ZooKeeper server之间的连接处理、提供了一套Fluent风格的操作API、提供ZooKeeper各种应用场景的抽象封装等功能。 1. 封装ZooKeeper client与ZooKeeper server之间的连接处理:...
* ZooKeeper的应用场景:分布式系统、云计算、微服务架构等。 Dubbo * Dubbo是什么?Dubbo是一个基于Java的分布式服务框架,提供了服务治理、负载均衡等功能。 * Dubbo的优点:高效、可扩展、灵活等。 * Dubbo的...
2. ZooKeeper 的应用场景:包括配置管理、命名服务、分布式锁、群体服务等。 Dubbo 知识点 1. Dubbo 介绍:Dubbo 是一个高性能的 RPC 框架,提供了服务治理、服务调用、服务监控等功能。 2. Dubbo 的应用场景:...
本文将深入探讨三个流行的注册中心:ZooKeeper、Consul和Nacos,分析它们的特点、用途以及应用场景。 1. **ZooKeeper** - **简介**:ZooKeeper是由Apache基金会开发的一个开源分布式协调服务,它为分布式应用提供...