带你快速理解Zookeeper

理解Zookeeper

为什么需要Zookeeper?

用一句话概括就是:用起来像单机但是又比单机更可靠

1、集群、可靠
2、当信息还没同步完成时,不对外提供服务
3、同步的时间压缩的更短
主要解决了两个问题:
(1)、避免了单机的不可靠
(2)、在多节点的情况下,尽可能的压缩同步的时间。

Zookeeper诞生历史:

ZooKeeper最早诞生在雅虎研究院的一个研究小组,最开始研究人员发现,在雅虎内部很多大型系统,都需要一个类似的系统,来进行分布式的协调,而这些系统往往都存在单点问题,也就是说一个写在内存里的keyvalue的形式,用它做分布式协调器。一旦荡机,整个系统就挂了,所以雅虎的开发人员就希望开发出这样一种东西:无单点问题的分布式协调框架,精力集中在处理业务逻辑。

Zookeeper对于自己比较官方的定义:

A Distributed Coordination Service for Distributed Applications

通俗的说就是:

Zookeeper是开源的共性能的分布式应用协调系统,一个高性能的分布式数据一致性解决方案。

Zookeeper背后是依赖Java运行的,所以会依赖我们的jdk,众所周知协调服务是比较难做的,因为我们去协调的时候设计到多个节点的配合,就容易出现通信和并发的问题,可能会出现死锁的问题,而Zookeeper背后的动机就是减轻程序员在这部分开发时候的负担。

1、Zookeeper

5大特点(使Zookeeper脱颖而出,和Zookeeper相同或者类似功能的软件也是存在的但是他们没有这5大特点,或者说使没有我们的ZooKeeper高效,这样以来使得我们的Zookeeper在竞争中胜出了)

1、顺序一致性(Zookeeper是分为客户端的和服务端的,我们作为客户端而言,我们有一些消息发给服务端。我们发出去是什么顺序,他就会以顺序一条一条的执行。
2、原子性(有一个请求过来更新内容,这个内容会被立刻同步到所有的节点上去,这个同步是一致的。要么全部同步成功,要么全部都不成功)
3、单一视图(无论我们客户端连接的是哪个Zookeeper,看到的内容都是一致的)
4、可靠性(给节点写一个数据,那么这个数据会一直保留,直到有另外的操作把这个数据写掉,才可能发成变化)
5、及时性(Zookeeper能保证在一定时间段内,而且这个时间段不会很长,一定能保证客户端在这个时间段内能从服务器上读到最新的数据状态)

正是有了这5大特点后,使得Zookeeper简单易用性能卓越

2、集群架构

架构图

3、Zookeeper和CAP关系

CP:一致性+分区容错性

能得到一致的数据结果,同时系统对网络具备容错性
但是它不能保证每次服务请求的可用性

Zookeeper为什么选择CP而不选择AP,就是和它的作用是息息相关的,Zookeeper它本身最大的作用就是分布式协调服务,它的职责就是保证数据,在所有服务之间保持同步和一致,所以c出于它的目的而言,就成了必选项。如果说Zookeeper选择AP而放弃C的话,那就使得它的各各节点可能不一致,这会造成非常恐怖的后果,因为本身就是对外提供一些非常重要的一致的信息的,但是现在一旦发生一些小问题,就会导致不同的人找我请求,我会返给它不同的结果。

4、zookeeper的作用(五种)(Zookeeper是一个中间件,主要是用于分布式系统的)

1、分布式服务注册与订阅
2、统一配置文件
3、生成分布式唯一id
4、Master节点选举
5、分布式锁

猜你喜欢

转载自blog.csdn.net/Turniper/article/details/109988669
今日推荐