诞生历史

单体应用在达到性能瓶颈之后,就必须靠分布式集群解决高并发问题,而集群的分布式架构和集群节点之间的交互一定少不了可靠的分布式协调工具,ZooKeeper就是目前极为重要的分布式协调工具。

什么是ZooKeeper: ZooKeeper最早起源于雅虎公司研究院的一个研究小组。当时,研究人员发现,在雅虎内部很多大型的系统需要依赖一个类似的系统进行分布式协调,但是这些系统往往存在分布式单点问题,所以雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架。 此框架的命名过程也是非常有趣的。在项目初期给这个项目命名时,准备和很多项目一样,按照雅虎公司的惯例使用动物的名字来命名(例如著名的Pig项目)。在探讨取什么名字的时候,研究院的首席科学家Raghu Ramakrishnan开玩笑说:“再这样下去,我们这儿就变成动物园了。”此话一出,大家纷纷表示新框架就叫动物园管理员吧,于是ZooKeeper(动物园管理员)诞生了。而ZooKeeper正好是用来协调分布式环境的不同节点的,形象地说,可以理解为协调各个以动物命名的分布式组件,所以ZooKeeper也就“名副其实”了。

它是一个单点的系统,单点的系统永远都是不可靠的,我们系统一旦大了之后呢,一定要尽量尽量的去避免单点,这是因为啊,机器在运行的时候呢,会有各种各样的问题,甚至说他们如果运行没有问题,甚至网络甚至电力,这些都有可能会成为瓶颈,成为一个不可控的因素,所以有的时候我们要想保证系统的稳定,那么单机呢是必须要避免的,如果发生故障,你很难继续提供稳定的服务,所以我们才需要呢这样的一个这个 ZK 呀?它是什么呢?就是说它是不但解决了我们单点的这个问题,那解决单点问题之后,你自然就变得高可用了。其次呢,它还有一个重要的特点就是可以对外保持数据一致。这个就是我们需要做 Zookeeper 的原因,我们需要一个能够对外提供数据一致的这样的一个组件同时能让它保证高可用。

参考: zookeeper如何保证一致性_只会写demo的程序猿的博客-CSDN博客_zookeeper如何保持一致性

zookeeper是什么

官网: Apache ZooKeeper