《彻底解决分布式系统一致性问题》学习笔记

《彻底解决分布式系统一致性问题》直播者:李艳鹏 笔记作者:JKXQJ

一致性问题产生的背景

JEE架构:WEB容器—组合业务逻辑—>EJB容器—数据存ORM—>数据库
SSH架构:Struts MVC—组合业务逻辑—>Spring容器—Hibernate ORM–>数据库
Web Service: WebService–> 注册服务(WSDL、UDDI)–>发现服务(UDDI)–> 服务调用(SOAP), 解耦,有中心服务,分布式并不推荐
ESB:企业服务总线
微服务:倡导REST服务,JSON传递数据,现在主流的。

常见的不一致的问题

  • 转账
  • 下订单和扣库存
  • 同步超时
  • 异步回调超时
  • 调单
  • 系统间状态不一致
  • 缓存和数据库不一致
  • 本地缓存节点间不一致
  • 缓存数据结构不一致

酸碱平衡原理

酸碱平衡原理 ACID

  • A:原子性
  • C:一致性
  • I: 隔离性
  • D:持久性

酸碱平衡-帽子 CAP

  • C: 一致性、数据一致更新,所有数据变动都是同步的
  • A: 可用性,好的相应性能,完全的可用性是指在任何故障模型下,服务都可以在有限的时间处理相应
  • P:分区容错性、可靠性

酸碱平衡-碱 Base

BA: 基本可用
S: 软状态,状态可以有一段时间不同步
E: 最终一致,最终数据是一致的就可以了,而不是时时保持一致

分布式一致性协议

两阶段

Created with Raphaël 2.1.0协调者协调者参与者1参与者1参与者2参与者2准备写redo、undo日志、锁定资源、执行操作、不提交准备成功准备写redo、undo日志、锁定资源、执行操作、不提交准备成功提交提交操作,释放资源提交成功提交提交操作,释放资源提交成功

三阶段

Created with Raphaël 2.1.0协调者协调者参与者1参与者1参与者2参与者2询问校验、超时导致中止可以执行询问校验、超时导致中止可以执行准备写redo、undo日志、锁定资源、执行操作、不提交准备成功准备写redo、undo日志、锁定资源、执行操作、不提交准备成功提交提交操作,释放资源提交成功提交提交操作,释放资源提交成功

TCC

查询模式

补偿模式

定期校对模式

可靠消息模式

缓存一致性模式

同步调用模式

消息模式

同步异步的抉择

  • 尽量使用异步来替换同步操作
  • 能用同步解决的问题就不要引入异步化

最终一致性模式

微服务超时模式

常见的不一致问题的解决

原作笔记:
http://www.jianshu.com/p/1156151e20c8

上一篇:Vcenter 模板克隆,批量布置虚拟机


下一篇:朴素贝叶斯从放弃到入门