分布式协调“方法论”

日常学习小结,不计格式,不计内容,只做笔记之用!!!

分布式系统特点

  • 地域分布性
  • 并发性
  • 对等性
  • 缺乏逻辑时钟
  • 故障总是会发生

分布式系统引发的问题

  • 网络三态(success、fail、timeout)
  • 节点故障
  • 通信异常
  • 网络分区

两军问题

分布式协调“方法论”_第1张图片
山上蓝军通过传令兵商定时间一起攻打白军,但是传令兵必须要穿过山谷的白军到达对面山上,有很大几率无法达到对面山顶,就很难达到命令一致。

用这个问题讲明,分布式节点之间通过网络通信,可能出现网络异常、脑裂问题,使两节点数据不一致。

“两军问题”,现如今还没有办法彻底解决。

CAP理论

由于两军问题无法彻底解决,大佬(砖家)提出CAP理论。
C(一致性):分布式系统中各副本数据一致(强一致)。
A(可用性):分布式一直处于可用状态。
P(分区容错):除非整个网络故障,否则系统中某节点、某网络异常,都不会影响系统的正常对外服务。(将数据放在系统的多个节点上,即使有节点不可达,也能保证正常对外服务)

在保证分区容错的前提下,怎样在一致性与可用性中权衡就是设计之初要考究的地方。

BASE理论

即使做不到强一致性,分布式系统可以根据业务特点,采用适当的方法实现最终一致性。
基本可用性:允许系统出现不可预见性故障时,允许损失部分可用性。
软状态:系统中数据存在中间状态,即系统中不同节点数据同步过程存在延时,但认为这种状态不影响系统的可用性。
最终一致:数据经过一段时间同步后,各节点数据达到一致。

2PC

二段提交(强一致性)——事务预提交阶段、事务提交阶段

缺点:

  • 性能问题:在执行过程中,所有节点都会进入阻塞状态,只有收到协调者(XA)的提交或回滚命令才会继续执行,后才释放资源。
  • 单点故障:若在执行过程中,协调者出现故障,,参与者收不到消息会进入中间状态。
  • 丢失数据致数据不一致:若收到协调者发的提交命令,但是参与节点宕机,此时参与节点数据没有提交,造成数据丢失。

3PC

三段提交——询问阶段、事务预提交阶段、事务提交阶段

与2PC对比:

  • 相当于在2PC之前增加一个缓冲阶段,预先进行资源询问。
  • 2PC只有协调者有连接超时,参与者没有,发生异常会一直等待,但3PC的协调者、参与者都有连接超时,当参与者长时间没有收到协调者的提交命令,会自动提交。

2PC、3PC都无法解决分布式系统数据完全一致的问题。

。。。

zookeeper

致力于高性能、高可用、且具备严格的顺序访问控制能力的分布式协调服务,登场!!!

你可能感兴趣的:(zookeeper)