日常学习小结,不计格式,不计内容,只做笔记之用!!!
分布式系统特点
- 地域分布性
- 并发性
- 对等性
- 缺乏逻辑时钟
- 故障总是会发生
分布式系统引发的问题
- 网络三态(success、fail、timeout)
- 节点故障
- 通信异常
- 网络分区
两军问题
山上蓝军通过传令兵商定时间一起攻打白军,但是传令兵必须要穿过山谷的白军到达对面山上,有很大几率无法达到对面山顶,就很难达到命令一致。
用这个问题讲明,分布式节点之间通过网络通信,可能出现网络异常、脑裂问题,使两节点数据不一致。
“两军问题”,现如今还没有办法彻底解决。
CAP理论
由于两军问题无法彻底解决,大佬(砖家)提出CAP理论。
C(一致性):分布式系统中各副本数据一致(强一致)。
A(可用性):分布式一直处于可用状态。
P(分区容错):除非整个网络故障,否则系统中某节点、某网络异常,都不会影响系统的正常对外服务。(将数据放在系统的多个节点上,即使有节点不可达,也能保证正常对外服务)
在保证分区容错的前提下,怎样在一致性与可用性中权衡就是设计之初要考究的地方。
BASE理论
即使做不到强一致性,分布式系统可以根据业务特点,采用适当的方法实现最终一致性。
基本可用性:允许系统出现不可预见性故障时,允许损失部分可用性。
软状态:系统中数据存在中间状态,即系统中不同节点数据同步过程存在延时,但认为这种状态不影响系统的可用性。
最终一致:数据经过一段时间同步后,各节点数据达到一致。
2PC
二段提交(强一致性)——事务预提交阶段、事务提交阶段
缺点:
- 性能问题:在执行过程中,所有节点都会进入阻塞状态,只有收到协调者(XA)的提交或回滚命令才会继续执行,后才释放资源。
- 单点故障:若在执行过程中,协调者出现故障,,参与者收不到消息会进入中间状态。
- 丢失数据致数据不一致:若收到协调者发的提交命令,但是参与节点宕机,此时参与节点数据没有提交,造成数据丢失。
3PC
三段提交——询问阶段、事务预提交阶段、事务提交阶段
与2PC对比:
- 相当于在2PC之前增加一个缓冲阶段,预先进行资源询问。
- 2PC只有协调者有连接超时,参与者没有,发生异常会一直等待,但3PC的协调者、参与者都有连接超时,当参与者长时间没有收到协调者的提交命令,会自动提交。
2PC、3PC都无法解决分布式系统数据完全一致的问题。
。。。
zookeeper
致力于高性能、高可用、且具备严格的顺序访问控制能力的分布式协调服务,登场!!!