分布式服务

分布式

特征

  • 分布性 分布式系统中的计算机会依据业务或其他需求在空间中随意分布,并且可以灵活变动
  • 对等性 整个系统中的计算机节点都是对等的,没有物理上的主从之分
  • 并发性 系统中的多节计算机节点可能会并发操作共享资源
  • 没有全局时钟 因为多个节点在空间上的随意分布,没有办法设置全局的时钟序列
  • 故障率 在由大量计算机组成的分布式系统中,故障是无法避免的

CAP定理

在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼

  • 强一致性 分布式系统会存在多个数据副本,要求所有的用户都可以读到最新的数据
  • 可用性 系统对用户的每个操作都能在有限的时间内返回正常的结果
  • 分区容错性 组成分布式系统的子网由于网络故障不能通信,导致整个系统被分成若干孤立的子网,但仍要保证致性和可用性服务

BASE理论

对CAP中可用性和一致性权衡的结果,通过牺牲强一致性来获取可用性,核心思想是:每个应用可以根据自身的特点,采用适当的方式达到最终一致性

  • 基本可用(Basically Available)是当系统出现故障时,可以牺牲部分可用性,如响应时间、功能减少,从而保证系统运行
  • 软状态(Soft state)允许不同节点的数据副本在同步时存在延迟,并认为该状态不会影响系统整体的可用性;
  • 最终一致性(Eventually consistent)强调系统所有的数据副本最终能达到一致状态,但不需要实时保证数据一致性,而所有客户端能获取到最新的值

一致性协议

2PC 两段提交

将事务的提交过程分成了两个阶段来进行处理,它对每个事务使用先尝试后提交的方式来处理,是一种强一致性算法。它的优点是原理简单,实现方便,而缺点是同步阻塞,单点问题,数据不一致

Smaller icon

阶段一:提交事务请求

  1. 事务询问:向所有参与者发送事务内容,并询问事务提交是否可以执行,然后等待参与者响应
  2. 执行事务:参与者执行事务,并在日志中记录Undo和Redo信息
  3. 参与者反馈响应:如果参与者成功执行事务操作就反馈Yes,否则反馈No

执行事务提交

  1. 发送提交请求:向参与者发送Commit
  2. 事务提交:参与者收到Commit后,执行事务提交,并在完成之后释放占用的事务资源
  3. 反馈提交结果:参与者完成事务提交后,反馈Ack消息
  4. 完成事务:所有参与者反馈Ack消息,完成事务

Paxos算法

Paxos是一种基于消息传递且具有高度容错性的一致性算法,是解决分布式一致性问题最有效的算法之一,能避免2PC和3PC存在的问题。

Raft协议

  1. 将一致性协议划分为领导者选举,Log复制和安全性
  2. 将paxos的p2p模式改成Master-slave模式