【Java八股-第三十一期】分布式事务 - 中间件

提纲:

🔥分布式事务

  • 问题

  • CAP定理

  • BASE理论

  • 解决方案

一、分布式事务

1. 问题

  • 在分布式微服务中,例如一个下单功能,涉及到订单微服务与库存微服务,若库存扣除成功,订单添加失败,就会导致事务不一致

2.CAP 定理

  • Consistency:一致性

    • 强一致性:必须保证每次读取到最新的数据 —— 这需要完成写操作后,进行数据同步最新的数据,期间会锁定读操作

    • 弱一致性:可以容忍部分数据版本的滞后

    • 最终一致性:只需要经过一段时间后,分布式系统中都能看到最新的数据

  • Availability:可用性 —— 向服务端请求时,每次都能返回数据,不关心数据是否是最新的,必定与强一致性互斥

  • Partition tolerance:分区容错性,由于网络中断等原因,导致服务中某个节点与其他节点失去连接,成为一个独立分区,出现分区时,系统仍然能向外提供服务

    • # 解决分区容错性需要将节点中的数据保存在其他不同节点上,那么数据在一个节点发生变化时,就必定会带来节点间的数据一致性和可用性的抉择问题

    • # 对于分布式事务,其实就可以看成将一个事务的执行结果,即回滚/提交,保存在了多个分支事务中,每一个执行分支事务的服务节点都能根据分支事务执行情况,对这个结果进行修改,那么就必定会带来C/A 的选择问题

  • CAP 定理指分布式系统无法同时高度满足这三个条件,实际上,如果舍弃 P,则只能采用单点服务,因此分布式系统都是选定 P,再从 C/A 中选择一个

3.BASE 理论

  • 1、Basically Available:基本可用,分布式系统出现故障时,允许损失一定的可用性

    • CP 模式:即关注一致性,使多个子事务执行后互相等待,同时提交,同时回滚,实现强一致,但在事务实行时会使系统处于弱可用状态

  • 2、Soft State:软状态,允许在系统运行时出现临时的不一致状态

  • 3、Eventually Consistent:最终一致,在软状态后,保证数据的一致

    • AP 模式:即关注可用性,各个子事务分别进行和提交回滚,允许事务间结果不一致,在事务结束后采取弥补措施来保证最终一

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

代码鹿のJAVA八股面试题总结 文章被收录于专栏

【📫专栏目录在最底部📫】 - 本专栏适合于JAVA已经入门的学生或人士,有一定的编程基础。 - 本专栏特点: 本专刊囊括了JAVA、Spring、计算机网路、操作系统、计算机网络、MySQL、算法与数据结构、中间件等一系列知识点,总结出了高频面试考点(附有答案),事半功倍,为大家春秋招助力。 - 本专栏内容分为五章

全部评论

相关推荐

AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务