分布式事务到是什么

93 天前
 Saber299

今天面试了一家外包公司,被问到分布式事务场景,我回答系统对接和微服务应用之间业务数据同步,直接被面试官打断结束面试了,想问下大家分布式事务是什么?

3674 次点击
所在节点    Java
37 条回复
csys
93 天前
CAP ,共识算法,最终一致性,状态同步,补偿机制,SAGA
具体是什么取决于面试方想要听到什么,广义的狭义的,过去的现在的,都不一样
但是总之就是通过各种手段在分布式环境下确保“正确”
Saber299
93 天前
@csys 我理解的出现分布式事务问题是两个系统或者两个应用之间不在同一个事务导致的,使用的解决方案也都是基于异步调用,像 mq 、定时任务重试或者人工干预这些,你说的这些我只理解了最终一致性……
acrisliu
93 天前
https://pdai.tech/md/arch/arch-z-transection.html
不知道楼主面试的是什么岗位,这些八股文还是多准备下比较好
poltao
93 天前
才疏学浅,至今没用过分布式事务,我来个八股文链接,一起学习下:
https://github.com/doocs/advanced-java/blob/main/docs/distributed-system/distributed-transaction.md
sagaxu
93 天前
经典八股了,虽然外包可能单 db 事务都用不上
yeqizhang
93 天前
四五年前我也问过这种问题,知道事务是什么就行了,没必要在意半桶水的面试官。分布式事务高级点就中间件那些实现了算法、论文的,你回答属于业务系统的那块也没错,还有多数据源、多节点的数据库涉及到的事务。
z1829909
92 天前
庙小妖风大, 水浅王八多.
c3de3f21
92 天前
庙小妖风大, 水浅王八多.
dododada
92 天前
外包要这些干嘛?真的用到分布式事务的,都是些难搞的大型服务,要保证最终数据一致性那种,还要允许一点延迟,外包不是随便挖坑么
me1onsoda
92 天前
事务当然是对数据库而言,跟应用没有直接关系
laminux29
92 天前
不懂分布式事务,写程序容易造成数据状态不一致。如果公司有的选,当然要选懂分布式事务的程序员。

举一个简单的场景,银行服务器的数据,分散在不同的物理机里。比如用户的借记卡数据在 IBM Server 上面,用户的信用卡数据在 X79 Server 上面,现在某用户通过借记卡,给自己的信用卡还款,思考一下,为什么各大银行的还款提醒,不是实时的,甚至有时候你晚上还款了,第二天银行还会给你发短信。通知你还款。

再举个更常见的场景:
Server1 保存用户订单信息,Server2 保存商品宝贝详情页。你想想为什么淘宝订单、京东订单、拼多多订单,很多年前的订单,已经看不到当时的商品详情。
ilvsxk
92 天前
@laminux29 #11
银行账单延迟和看不到详情单纯就是为了降本省成本,和分布式事务有啥关系?
laminux29
92 天前
@ilvsxk

银行账单延迟是银行没技术能力对 IBM Server 的老系统与 x86 的新系统做分布式事务的对接。
JackSlowFcck
92 天前
分布式事务是指在分布式系统中,涉及多个数据库或服务节点的事务操作。在传统的单体应用中,事务通常由单个数据库管理,比较容易实现事务的一致性。但在分布式环境下,由于数据和操作分布在不同的节点上,事务的管理变得更加复杂。

分布式事务通常具有以下特点:
1. 多个数据源:涉及多个独立的数据库或数据存储节点。
2. 跨服务调用:可能跨越多个不同的服务,每个服务可能有自己的事务管理机制。
3. 数据一致性挑战:确保在多个节点上的数据操作要么全部成功,要么全部回滚,以保持数据的一致性。

常见的分布式事务场景包括:
1. 微服务架构:不同的微服务之间进行数据交互和业务操作时,可能需要保证事务的一致性。例如,在一个电商系统中,订单服务和库存服务分别在不同的微服务中,当创建订单时,需要同时减少库存,这就需要分布式事务来保证两个操作的一致性。
2. 系统集成:多个独立的系统进行对接和数据同步时,也可能需要处理分布式事务。比如,企业内部的不同业务系统之间进行数据交换,要确保数据的完整性和一致性。

实现分布式事务的方法有多种,常见的有两阶段提交( 2PC )、三阶段提交( 3PC )、补偿事务( TCC )、基于消息队列的最终一致性等。这些方法各有优缺点,需要根据具体的业务场景和需求进行选择。

在面试中,如果被问到分布式事务场景,可以更加具体地阐述一些实际的业务例子,比如电商订单与库存的管理、银行转账系统中不同账户之间的资金转移等,并且可以简要介绍一下实现分布式事务的方法和思路。这样可以让面试官更好地了解你的知识深度和解决实际问题的能力。
-----
不蟹 bro
MoYi123
92 天前
真的有场景是不得不用分布式事务的吗?
我遇到过的情况都是对数据库的事务理解不行, 然后搞了一套恶心人的分布式事务上去.
wWjd5V5L0636B5YV
92 天前
@laminux29 #13 数据状态一致性不是技术选型决定的么?
pangdundun996
92 天前
@laminux29 这个例子不太合适,银行这个是因为信用卡核心系统基本都是双信息系统,要等夜间跑批清算才能入账,跟分布式事务没关系
pangdundun996
92 天前
@csys 一般还是本地消息表和可靠消息用得多,3PC 、TCC 那些我是没见到落地过
dyllen
92 天前
数据同步也没什么大问题呀。就是多个系统之间的原子操作,要么成功要么失败,用处就是保证跨系统的业务操作数据的强一致性,和本地数据库的事务一个目的。
silencil
92 天前
八股文学习了一大堆,面试不到我学习的内容五分之一,工作内容涉及不到十分之一。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX