java分布式项目案例(「Java面试题」惊呆下巴!请说一下分布式事务的理解和解决方案)java教程 / Java Web应用中的分布式事务处理与解决方案...

wufei123 发布于 2024-06-11 阅读(7)

考察目的这个问题考察难度不算大,考察4年以上Java开发经验的同学分布式事务主要涉及到跨库事务处理问题,除了考察求职者对这方面知识的了解以外,还想了解一下求职者的实际处理经验问题分析通常情况下,传统的关系型数据库只能保证单个数据库中多个数据表的事务特性。

一旦多个SQL操作涉及到多个数据库,这类的事务无法解决跨库事务问题在传统架构下,这种问题出现的情况非常少,但是在分布式微服务架构中,分布式事务的问题变得更加突出以电商项目为例,假设我们要实现电商系统中的支付功能,它的实现流程如下。

在微服务架构中,应用被拆分成以业务模块为单元的服务,并且每个服务有自己的数据库系统。当用户发起支付时,会涉及到以下几个事务操作:创建支付订单从资金服务中扣除余额从红包服务中扣除余额更新支付结果

这是四个典型的事务操作,而且这些操作分别属于不同的数据库,最终期望的结果是希望这三个服务所对应的数据是一致的,很显然传统的事务无法解决这个问题!因此就产生了分布式事务的问题,所谓分布式事务,就是事务具有分布式特性,简单理解就是如何实现多个跨数据库的小事务组成的大事务的ACID特性。

下面来看看高手的回答高手:分布式事务是指存在多个跨库事务的事务一致性问题,或者是指在分布式架构下由多个应用节点组成的多个事务之间的事务一致性问题目前主流的分布式事务解决方案有两种一种是基于XA协议实现的强一致性事务方案,比如Atomikos、Seata中的XA事务模型。

基于CAP理论可以知道,如果要保证分布式事务的强一致性,就必然会带来性能的影响从而影响到可用性所以强一致性事务性能会比较低另一种是基于BASE理论下的弱一致性事务解决方案,比如TCC事务模型、基于可靠性消息的最终一致性方案、Seata的Saga事务模型等。

最终一致性事务损失了数据的强一致性,通过异步补偿的方式达到数据的最终一致因此在性能上比较好,适用于并发量比较高的场景总结大家知道怎么回答了吗?如果你喜欢我的作品,记得点赞收藏加关注哦需要高手面试文档合集(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以后台私信发送【Mic】或者直接jia\ /:mic6369。

mic6369

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻36462