什么是Zookeeper?
官方定义:Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API。
为什么要有Zookeeper?
如果要问为什么要有Zookeeper,那么就要从分布式系统聊起:20世纪60年代,大型机被发明了出来,凭借自身的超强计算和I/O处理能力以及稳定、安全性,成为了世界的主流。但是大型机也有一些致命的问题,比如造价昂贵、操作复杂、单点问题等。特别是对大型机的人才的培养成本非常之高。随着这些问题的出现,不断影响了大型机的发展。而另一方面PC机性能的不断提升和网络普及,大家开始转向了使用小型机和普通的PC服务器来搭建分布式的计算机系统,来降级成本。而后分布式便不断火热起来。
那什么是分布式系统呢?
分布式系统是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通讯和协调的系统。它具有以下特点:分布性、对等性、并发性、缺乏全局时钟、故障总是会发生。分布式环境会有那些问题呢?
通讯异常、 网络分区(脑裂)、 三态 、节点故障分布式系统事务处理与数据一致性上有那些挑战?
a) ACID 原子性、一致性、隔离性、持久性
b) CAP 一致性、可用性、分区容错性
c) BASE 基本可用、软状态、最终一致性
d) 2PC和3PC
经过上面的种种的发展,Zookeeper作为Apache Hadoop的子项目发展起来,它为分布式应用提供了高效可靠的分布式协调服务。