Zookeeper
Zookeeper的使用:构建一般的分布式应用。
Zookeeper是Hadoop的分布式协调服务。
分布式应用的困难在于会出现“部分失败”,即我们甚至不知道一个操作是否已经失败。
Zookeeper并不能根除部分失败,也不能隐藏部分失败,但他提供了一组工具,使你在构建分布式应用时能够对部分失败进行正确处理。
Zookeeper的特点:
1.简单性;Zookeeper的核心是一个精简的文件系统。(提供操作:排序和通知)
2.富有表现力;实现协调数据结构和协议。(相关实例:分布式队列、分布式锁和一组同级节点中的“领导者选举 leader election”)
3.高可用性;运行于一组机器上,高可用,完全可以依赖。(避免出现单点故障)
4.采用松耦合交互方式;在Zookeeper支持的交互过程中,参与者不需要彼此了解。(“约会”机制,让进程在不了解其他进程或网络状况的情况下能够彼此发现并进行交互;参与协调的各方甚至可以不必同时存在,Zookeeper中可以留下一条消息。)
5.是一个资源库;Zookeeper提供了一个通用协调模式实现和方法的开源共享存储库。
示例:
假设有一组服务器用于为客户端提供某种服务。我们希望每个客户端都能找到其中一台服务器,这样它们就可以使用这项服务。
有一个挑战是如何维护这组服务器的列表。这组服务器的成员列表显然不能存储在网络中的单个节点上,否则该节点的故障将意味着整个系统的故障,我们希望这个成员列表是高可用的。
我们还希望当其中一台服务器出现故障时,能够从这组服务器成员列表中删除该节点,避免提供不可用的服务。
理解Zookeeper的一种方法就是将其看作一个具有高可用性的文件系统。没有文件和目录,而是统一使用“节点”概念,称为znode。
原文:http://zlfwmm.blog.51cto.com/5892198/1706647