1、概述
ZooKeeper是一个
分布式的,开放源码的
分布式应用程序协调服务,是
Google的Chubby一个
开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口。
第一章:CAP定理和base理论
CAP理论:一个分布式系统不可能同时满足一致性(C:consistenc)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。
1、一致性:
在分布式环境中,一致性是指数据在多个副本之间能否保持一致的特性。
2、可用性:
系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在
有限的时间内返回结果。有限的时间指的是对于用户的一个操作请求,系统必须能够在指定的时间内(系统设计之初就设定好的系统运行指标,如接口调用超时时间)返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。
3、分区性容错:
分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。
网络分区是指在分布式系统中,不同的节点分布在不同的子网络(机房或异地网络等)中,由于一些特殊的原因导致这些子网络之间出现不连通的状况,但各个子网络的内部网络是正常的。从而导致整个系统的网络环境被切分成了若干个孤立的区域。
放弃P:如将所有的数据都放在一个分布式节点上,但意味着放弃了系统的可扩展性。
放弃A:一旦系统遇到网络分区或其他故障,那么受到影响的服务需要等待一定时间,而在等待期间系统不可用。
放弃C:放弃一致性是指放弃数据的强一致性,而保留数据的最终一致性。
结论:对于一个分布式系统来说,分区容错性是一个最基本的要求,因为分布式系统中的组件必然需要被部署到不同的节点,否则也就无所谓分布式系统了,因此必然出现子网络,那么网络问题又是一个必定会出现的异常情况。因此系统架构设计师需要把精力花在根据业务特点在C(一致性)和A(可用性)之间寻求平衡。
BASE理论
BASE:是指三个状态,基本可用,软状态,最终一致性。核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
基本可用:
指分布式系统在出现不可预知故障的时候,允许损失部分可用性(响应时间上的损失,或者功能上的损失)
弱状态:软状态,允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
最终一致性:系统中所有的数据副本,在经过一段时间后,最终能够达到一个一致的状态。