【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、算法与数据结构、中间件等一系列知识点,总结出了高频面试考点(附有答案),事半功倍,为大家春秋招助力。 - 本专栏内容分为五章

全部评论

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务