从这周开始深刻学习Zookeeper,主要是看PAXOS到ZOOKEEPER分布式一致性理论与实践以及Zookeeper3.5的源码,在整个学习过程当中会整理一些学习笔记。html
1.分布式基本概念数据库
2.一致性协议服务器
分布式系统是一个硬件或者软件组件分布在不一样网络计算机上,彼此之间仅仅经过消息传递来进行通讯和协调的系统。一个分布式系统一般具备如下特色:网络
- 分布式:在空间上随意分布,
- 对等性:组成分布式系统的全部节点都是对等的。
- 并发性
- 缺少全局时钟。在分布式系统很难肯定多个时间的顺序,缘由就是分布式系统缺少一个全局的时钟。
- 故障老是会发生。
分布式系统体系机构面对着诸多的难题和挑战:并发
- 通讯异常:分布式系统须要在各个节点之间进行网络通讯,而网络自己是不可靠的。
- 网络分区:当网络因为发生异常状况,最终致使组成分布式系统的全部节点,只有部分节点之间可以进行通讯,另外一些节点则不能。这种现象称为网络分区,俗称脑裂。
- 三态:分布式系统的每一次请求与响应存在特有的三态概念,即成功、失败、超时。
- 节点故障:指组成分布式系统的服务器节点出现的宕机或“僵死”现象。
从ACID到CAP/BASE
ACID
事务是由一系列对系统中数据进行访问与更新的操做所组成的一个程序执行逻辑单元,一个数据库事务具备如下四个特性:分布式
- 原子性(Atomicity):指事务必须是一个原子的操做序列单元。在执行过程当中要么所有执行,要么所有不执行。
- 一致性(Consistency):事务的执行不能破坏数据库的完整性和一致性,事务在执行先后数据库必须处于一致的状态。
- 隔离性(Isolation):并发的事务是互相隔离的,一个事务的执行不能被其余事务干扰。标准的SQL规范中,定义了4个事务隔离级别:Read Uncommitted、Read Committed、Repeatable Read和Serializable。MySQL的默认隔离级别是:Repeatable Read,Oracle的默认隔离级别是:READ COMMITTED。
- 持久性(Durability):指一个事务一旦提交,它对数据库中对应数据状态的变动是永久性的。

分布式事务
分布式事务是指事务的参与者、支持者的服务器、资源服务器以及事务管理器分别位于分布式系统的不一样节点之上。一般一个分布式事务中涉及对过个数据源或者业务系统的操做。学习
CAP理论:一个分布式系统不可能同时知足一致性(C:Consistency)、可用性(A:Availability)可分区容错性(P:Partition tolerance)。htm
- 一致性:一致性是数据在过个副本之间是否可以保持一致的特性。
- 可用性:指系统提供的服务必须一致处于可用的状态。
- 分区容错性:分布式系统在遇到任何网络分区的故障时候。仍然须要可以保证对外提供知足一致性和可用性的服务。

BASE是Basically Available(基本可用)、Soft state(软状态)、Eventually Consistency(最终一致性)。blog
- 基本可用:指分布式系统在出现不可预知的故障时容许损失部分可用性。
- 软状态:是指容许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的总体可用性,即容许在不一样节点的数据副本之间存在数据同步的延时
- 最终一致性:系统中的全部数据副本,在通过一段时间的同步后,最终可以到达一个一直的状态。