了解分布式架构

一. 分布式架构

1. 特点

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统;

分布性:组成分布式系统的所有计算机节点都是对等的;

并发性:系统中的多个节点同时操作一些共享的资源;

缺乏全局时钟:很难定义两个事件究竟谁先谁后;

故障总是会发生:组成系统的所有计算机,都有可能发生任何形式的故障;

2. 问题

通信异常:系统中各个节点间的网络通信可能会伴随着网络不可用的风险;

网络分区:只有部分节点之间能正常通信,另一些节点不能,俗称“脑裂”;

三态:成功,失败,超时;

节点故障:组成系统的节点出现宕机或僵死现象;

3. ACID

原子性Atomicity:事务必须是一个原子的操作序列单元;事务的各项操作在一次执行过程中,状态只有全部成功执行和全部不执行;

一致性Consistency:事务的执行不能碰坏数据库数据的完整性和一致性;一个事务在执行前后数据库都必须处于一致性状态;

隔离性Isolation:并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰;

持久性Durablity:一个事务一旦提交,对数据库中对应数据的状态变更就应该是永久性的;

4. CAP定理

一个分布式系统不可能同时满足一致性Consistency,可用性Availablity和分区容错性Partition tolerance;最多同时满足两项;

5. BASE理论

基本可用Basically Available,软状态Soft state,最终一致性Eventually consistent;

二. 一致性协议

1. 2PC

Two-Phase Commit,二阶段提交,事务处理过程中保持原子性和一致性;

阶段一:提交事务请求;投票阶段,即各参与者投票表面是否要继续执行接下去的commit操作;

阶段二:执行事务提交;执行阶段,根据一阶段的结果执行提交操作或回滚操作;

优点:原理简单,实现方便;

缺点:

  同步阻塞,各个参与者等待响应过程中,无法进行其他任何操作;

  单点问题,如果协调者出现问题,整个流程无法运转;

  数据不一致,部分参与者收到了commit请求,部分没有收到;

  保守,没有完善的容错机制,任一节点的失败都会导致整个事务的失败;

2. 3PC

Three-Phase Commit,三阶段提交,CanCommit,PreCommit,do Commit;

优点:降低了参与者的阻塞范围,并且能够在出现单点故障后继续达成一致;

缺点:在参与者接收到preCommit消息后,如果协调者和参与者后续无法正常通信,参与者依然会提交事务,导致数据不一致;

3. Paxos算法

略;

猜你喜欢

转载自www.cnblogs.com/bbbbs/p/12546082.html