《彻底解决分布式系统一致性问题》学习笔记-阿里云开发者社区

开发者社区> JKXQJ> 正文

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Raft 为什么是更易理解的分布式一致性算法
Raft 为什么是更易理解的分布式一致性算法
3387 0
iOS Abort问题系统性解决方案
本文将针对iOS客户端的Abort问题,进行根因定位分析,并提出系统性解决方案。
4483 0
Java笔记——Redis分布式锁解决方案
我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。
1256 0
跨地域场景下,如何解决分布式系统的一致性?
跨地域,即常说的“异地双活”、“异地多活”中的异地概念。在业务发展较快的情况下,我们的服务便需要跨地域部署,以满足各区域就近访问和跨地域容灾等需求,在此过程中,不可避免会涉及到跨地域下的分布式一致性问题。由跨地域所带来的网络延迟问题,以及由于网络延迟而衍生的一系列问题,对于设计和构建一个跨地域分布式一致性系统是极大的挑战,业界有很多针对此问题的解决方案,都希望能解决跨地域场景下的一致性问题。
1196 0
参数问题|学习笔记
快速学习参数问题
7 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始。 数据指针:当前内存缓存区,输入数据所在位置。 PDV:Program Data Vector,在DATA步中所有涉及的变量被编程当前向量的一部分。 2. SAS编程基础 2.1 SAS逻
1510 0
常见的一致性哈希算法#Java实现#
    之前参与过缓存框架的封装与测试工作,并对一致性哈希算法进行了相关的调研。通过对spymemcached与jedis等客户端源码的阅读对一致性哈希算法的Java实现进行调研: 1. 使用TreeMap实现,TreeMap本身继承NavigatableMap,因此具备节点导航的特点 2. 通
2164 0
数据结构学习笔记——最大子列和问题
PTA 中国大学MOOC-陈越、何钦铭-数据结构 01-复杂度1 最大子列和问题(20 分) 给定K个整数组成的序列{ N​1​​ , N​2​​ , ..., N​k},“连续子列”被定义为{ N​i , N​i+1​​ , ..., N​j},其中 1≤i≤j≤K。
1025 0
+关注
JKXQJ
好好学习,天天向上
362
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载