在过去,每个应用都是单个程序,跑在单一CPU的单一服务器上。现在不一样了。在大数据和云计算的世界里,应用都是由许多独立的程序运行在一组不断变化的机器上。
协调这些独立程序的行为 比起单一程序来困难的多。这样很容易导致开发人员陷入协调的逻辑而没有时间来实现正确的应用逻辑,或者反过来,花很少的时间来简单做主逻辑协调从而导致了脆弱的,不可靠的单点故障。
ZooKeeper就是为健壮服务而设计的,这样可以使开发人员能够主要集中在应用程序的逻辑上而不是服务器之间的协调逻辑。它暴露一些简单的API,受文件系统API的启发,ZooKeeper允许开发者实现一个常见的协调任务,比如选举Master Server,管理组员,管理元数据(metadata)。 ZooKeeper Lib库有两个主要的API实现-Java和C,一个有JAVA实现的服务组件运行在一个专有的服务器集群上,一个专有的服务器集群可以让ZooKeeper很好的实现容灾和有大的吞吐量。
当使用ZooKeeper设计应用时,理想的是将应用数据和控制或者叫协调数据分离。举个例子:邮件服务的用户对邮件内容感兴趣,但是肯定不会对由那个服务器处理这个特定邮箱的请求感兴趣。邮件内容是应用数据,而邮箱到特定服务器的映射(mapping)关系就是一部分的协调数据(metadata)。ZooKeeper集群管理后者。
zookeeper(一) 介绍,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/zhonghan/p/3836068.html