Zookeeper概述、特点、原理

Zookeeper是一款用于实现分布式环境数据一致性的工具,提供包括数据发布订阅、命名服务、分布式锁等在内的分布式协调服务。它具有顺序一致性、原子性、单一视图、可靠性和实时性等特点。Zookeeper集群由多台机器组成,通过选举选出唯一leader,保证数据一致性。当过半节点同意提案时,请求才能执行,确保服务的高可用性和数据的可靠性。

一、Zookeeper

1、分布式环境下数据一致的基本问题
· 分布式环境下,为了保证数据的可靠或者分布式的处理没数据往往具有多个副本,而当数据发生变化时,如何保证数据一致,这是分布式环境下数据分布式存储和处理的最基本的问题之一。

2、Zookeeper概述
· Zookeeper能够在分布式环境下实现数据的一致。他就是一个工具,利用这一特性,可以实现集群中的分布式协调服务。
· 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作。
· Zookeeper之所以能够实现分布式协调服务,是因为它能够保证分布式数据一致性
 ·所谓的分布式数据一致性,指的就是可以在集群中不同节点访问到的数据保持一致。
· 这样的分布式协调服务包括:数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能。
· Zookeeper基于优良的设计,成为了分布式环境下最重要的分布式协调工具之一。

3、Zookeeper的特点
· Zookeeper工作在集群中,对集群提供分布式协调服务,它提供的分布式协调服务具有如下的特点:
(1)顺序一致性
· 从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到zookeeper中。
· 可以简单理解为:事务按照顺序发生。
(2)原子性
· 所有事物请求的处理结果在整个集群中所有机器上的应用情况是一致的,即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,不会出现集群中部分服务器接收了事务,另外一部分服务器拒绝事务的情况。
· 可以简单理解为:要么都变,要么都不变
(3)单一视图
·  无论客户端连接的是哪个zookeeper服务器,其看到的服务端数据模型都是一致的。
· 简单理解为:找谁都一样
(4)可靠性
· 一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。
· 可以简单理解为:说话算数
(5)实时性
· zookeeper并不能做到真正的实时性,当zookeeper告诉客户端操作成功时,可以确信数据最终必然是一致,但是zookeeper集群仍需要一定的时间同步数据达成最终一致的效果,所以zookeeper只能保证数据的顺序一致和最终一致,做不到实时的一致,只有伪实时的特性。
· 可以简单理解为:说成了就是成了,但是需要点时间完成同步。

4、zookeeper原理
(1)不能一台机器
· zookeeper为了保证可靠性,不能用一台机器,而应该是一个集群,避免单节点故障。
(2)有唯一的leader
· 为了保证zookeeper集群数据能够一致,必须有一个老大,这就是leader,其他的是follower。某一时刻集群里只能有且仅有一个leader。其中,leader可以执行增删改和查询操作,而follower只能进行查询操作。所有的更新操作都会被转交给leader来处理,leader批准的任务,再发送给follower去执行来保证和leader的一致性。
· 由于网络是不稳定的,为了保证执行顺序的一致,所有的任务都会被赋予一个唯一的顺序的编号,一定是按照这个编号来执行任务,保证任务顺序的一致性。
(3)机制
· leader什么情况下可以认为一个客户端的请求处理成功?
·   只要集群中过半数量的zookeeper通过请求,leader就认为一个请求通过,通知所有同意和不同意的follower更新数据,最终集群中的所有数据更新成功。避免全部同意造成的单节点故障,也避免leader少数同意违反数据的可靠性。
·  因为采用过半同意机制,所以最极端的情况下集群中有过半的机器直到最新提案,而如果过半的机器挂掉,则剩下的机器可能不知道最新提案,则无法保证新选出的leader知道最新提案,所以zookeeper集群采用过半存活机制,否则停止服务。
注意:
提交提案时,只要过半的机器同意就可以提交一个提案,但是只要过半的机器宕机,集群停止服务。

从而可以推导出:
· zookeeper的集群中的机器数量最好应该是奇数个,因为需要过半存活集群才能工作,所以偶数个机器提供的集群可靠性其实和偶数-1个机器提供的集群可靠性是一样的。

5、leader选举机制:
` 最开始集群启动时,会选择最先达到过半条件的机器作为leader。
` 当leader挂掉后,follower开始进入选举阶段,互相发送自己持有的数据的最高编号,进行投票,投票给最高版本的持有者,任何一个follower只要收到超过一般的额票就会自动成为新的leader,由于每个follower都只有一票,所以最多只有一个follower会通过过半投票选出具有最高任务编号(最新提案)的机器成为新的leader。

6、Zookeeper的过半机制总结:
(1)过半选举:只有当一台服务器满足超过一半的服务器的时候才能选举为leader。
(2)过半存活:当集群中有一半的服务器宕机,那么整个集群会停止向外提供服务。
(3)过半服务:在Zookeeper集群中,任何一个请求都需要超过半数的节点同意才能执行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值