深入了解Zookeeper系列
1.分布式特点
分布式系统是一个硬件或软件之间分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
2.分布式系统的特征
2.1分布性
(计算机在空间上随意分布,分布情况会随时变动)
2.2对等性
(计算机没有主/从之分,个节点都是对等的)
2.3并发性
2.4缺乏全局时钟
(进程之间的信息交换难分先后)
2.5故障总会发生
3.分布式环境存在的问题
a.通信异常
(由于网络本身的不可靠性,个节点之间进行网络通信存在信息丢失和消息延迟)
b.网络分区
当网络发生异常,部分节点之间的网络延时不断增大,最终导致分布式的节点中只有部分节点之间能够进行正常通信,而另一些节点则不能,俗称脑裂在极端情况下,这些局部小集群会独立完成原本需要整个分布式系统才能完成的功能,包括对数据的事务处理。
c.三态:
成功状态
失败状态
超时状态(网络原因)
请求消失在发送过程中消失,没有被成功接受
响应反馈给发送方是消失丢失
d.节点故障
分布式服务器节点出现宕机或僵死显现
4.ACID事务的四大特性(原子性、一致性、隔离性、持久性)
原子性: 全部成功执行或全部不执行
一致性:事务的执行不能破坏数据库的完整性和一致性
隔离性:并发事务是相互隔离的,并发执行的各个事务之间不能相互干扰
持久性:一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久性的
5.CAP理论
一个分布式系统不可能同时满足一致性,可用性和分区容错这三个基本需求,最多只能同时满足其中的两项。
C(一致性 Consistency): 所有节点上的数据,时刻保持一致
A可用性(Availability):每个请求都能够收到一个响应,无论响应成功或者失败
P分区容错(Partition-tolerance):表示系统出现脑裂以后,仍然需要能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生故障
因为对于分布式系统来说,网络问题是一定会出现的问题所以会选择
CP 或AP
CAP理论仅适用于原子读写的Nosql场景,不适用于数据库系统
6.BASE理论
BASE理论是对CAP中一致性和可用性权衡的结果,核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用最适当的方式来使系统达到最终一致性。
基本可用:分布式系统出现不可预知故障时,允许损失部分可用性(注意不等价于系统不可用)例如:
1.响应时间上的损失(由于网络故障,响应时间增加1~2秒)
2.功能损失(降级页面)
弱状态(软状态)
允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体性能,即允许系统不同节点的数据副本之间进行数据同步的过程存在延时。
最终一致性
系统能保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性
参考《从Paxos到Zookeeper 分布式一致性原理与实践》