/consensus

GNU General Public License v3.0GPL-3.0

分布式系统

所谓集中式系统就是一台或多台计算机主机组成中心节点,数据集中存储 在这个中心节点中,并且整个系统中所有的业务单元都集中部署在这个中心 节点上,系统所有功能均由其集中处理。

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

分布式系统的特点

  • 分布性
  • 对等性
  • 并发性
  • 缺乏全局时钟
  • 故障总是会发生

分布式系统解决的问题

  • 系统可用性问题
  • 数据一致性问题

分布式系统的作用

分布式系统除提升系统整体性能外还有一个重要的特性就是提升系统可靠性, 可靠性是指当分布式系统中一台或N台机器宕机后都不会导致系统不可用, 每个节点都可能是其他节点的快照,这保证了分布式系统的可靠性,而存在 多个复制节点就会存在数据不一致的问题,这时一致性就是分布式系统的核心; 分布式系统中必须保证:如果分布式系统中初始各节点数据是一致的,每个节点 按照顺序执行一系列的操作,那么最终每个节点数据也必须是一致的。

两阶段提交

两阶段提交问题

  • 同步阻塞问题:在执行过程中,所有参与节点都是事务阻塞型, 当参与者占用公共资源时,其他第三方节点访问公共资源不得不处于 阻塞状态;
  • 单点故障:由于协调者的重要性,一旦协调者发生故障,参与者会 一直处于阻塞状态;尤其是在第三阶段,协调者发生故障,那么所有 参与者都还处于锁定资源的状态中,而无法继续完成事务操作;
  • 数据不一致:在两阶段提交的第二阶段,当协调者向参与者发送 commit请求后,发生局部网络异常或者发送commit请求过程中 发生故障,这回导致只有一部分的参与者接收到commit请求。

三阶段提交

  • 三阶段提交在协调者和参与者中都引入了超时机制,并且把两个阶段 提交协议的第一步分成了两步:询问,锁定,提交;
  • 三阶段提交是非阻塞协议,当超时时默认自动commit,会存在数据不一致的问题。