- 分布式系统和应用不仅能提供更强的计算能力,还能为提供更好的容灾性和扩展性。
- Apache ZooKeeper旨在减轻构建健壮的分布式系统的任务。ZooKeeper基于分布式计算的核心概念而设计,主要目的是给开发人员提供一套容易理解和开发的接口,从而简化分布式系统构建的任务。
- ZooKeeper是Google的Chubby项目的开源实现,它曾经作为Hadoop的子项目,在大数据领域得到广泛应用。
- ZooKeeper以Fast paxos算法为基础,同时为了解决活锁问题,对Fast paxos算法进行了优化,因此也可以广泛用于大数据之外的其他分布式系统,为大型分布式系统提供可靠的协作处理功能(例如,异构系统中的协作通信问题)。
- 整个ZooKeeper服务所管理的就是协同数据(或称元数据)。因此当你决定使用ZooKeeper来设计应用时,最好将应用数据和协同数据独立开。比如,网络邮箱服务的用户对自己邮箱中的内容感兴趣,但是并不关心由哪台服务器来处理特定邮箱的请求。在这个例子中,邮箱内容就是应用数据,而从邮箱到某一台邮箱服务器之间的映射关系就是协同数据(或称元数据)。
1、ZooKeeper的使命
- ZooKeeper的功能有一条主线:它可以在分布式系统中协作多个任务。
- 实际上,在一台计算机上运行的多个进程和跨计算机运行的多个进程从概念上区别并不大。在多线程情况下有用的同步原语在分布式系统中也同样有效。一个重要的区别在于,在典型的不共享环境下不同的计算机之间不共享除了网络之外的其他任何信息。虽然许多消息传递算法可以实现同步原语,但是使用一个提供某种有序共享存储的组件往往更加简便,这正是ZooKeeper所采用的方式。(ZooKeeper提供有序共享存储的组件来实现同步原语。)
1、ZooKeeper的使用实例
- Apache HBase
- HBase是一个通常与Hadoop一起使用的数据存储仓库。在HBase中,ZooKeeper用于选举集群内的主节点,以便跟踪可用的服务器,并保存集群的元数据。
- Apache Kafka
- Apache Solr
- Yahoo! Fetching Service
- Facebook Messages
- Facebook推出的这个应用集成了email、短信、Facebook聊天和Facebook收件箱等通信通道。该应用将ZooKeeper作为控制器,用来实现数据分片、故障恢复和服务发现等功能。
- 除了以上介绍的这些应用外,还有很多使用ZooKeeper的例子。根据这些代表应用,我们可以从更抽象的层次上讨论ZooKeeper。当开发人员使用Zookeeper进行开发时,开发人员设计的那些应用往往可以看成一组连接到ZooKeeper服务器端的客户端,它们通过ZooKeeper的客户端API连接到ZooKeeper服务器端进行相应的操作。
- ZooKeeper的客户端API功能强大,其中包括:
- 保障强一致性、有序性和持久性。
- 实现通用的同步原语的能力。
- 在实际分布式系统中,并发往往导致不正确的行为。ZooKeeper提供了一种简单的并发处理机制。
1
# #
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。