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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 《彻底解决分布式系统一致性问题》直播者:李艳鹏 笔记作者:JKXQJ一致性问题产生的背景JEE架构:WEB容器—组合业务逻辑—>EJB容器—数据存ORM—>数据库 SSH架构:Struts MVC—组合...

《彻底解决分布式系统一致性问题》直播者:李艳鹏 笔记作者: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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
174 0
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
296 0
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
187 1
|
7月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
156 1
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
107 1
|
7月前
|
SpringCloudAlibaba Java 持续交付
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
774 1
|
7月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
1024 0
|
7月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
107 0
|
7月前
|
负载均衡 算法 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
150 0
|
7月前
|
SQL SpringCloudAlibaba 中间件
SpringCloud Alibaba Seata处理分布式事务--学习笔记
SpringCloud Alibaba Seata处理分布式事务--学习笔记
80 0