PmHub分布式事务Seata保证任务审批状态一致性(👍必看)
大约 3 分钟PmHub面试系列
你好呀,我是苍何!
欢迎来到面试系列!这篇文章主要讲 PmHub 中如何利用 Seata 分布式事务来保证任务审批状态一致性。
分布式事务是历年来面试最喜欢问的,但我看网上教程都是偏理论的多,联系实际项目的少,而面试最喜欢的是拿着项目拷打。我们的目标是理论联系实际,让你少走弯路~
所以通过本章的学习,让你一次性理解分布式事务,并教你在 PmHub 中如何用好分布式事务,可谓是从道到术,卷起来吧,少年!!
本章可谓是干货满满,面试中也是重中之重,以下描述你可以直接写进简历,也可以根据你的理解进行优化。
- 为保证任务审批状态的一致性,采用 Seata 分布式事务的 AT 模式
事务
我们先想象一个场景: 假设用户A向用户B转账100元,这个操作包括以下步骤:
- 从用户A的账户中扣减100元。
- 向用户B的账户中增加100元。 这两个步骤要么都成功,要么都失败。如果在步骤1扣减了100元,但步骤2增加时发生了错误,我们希望,用户A的账户金额恢复到原来的状态。
上面是一个典型的事务场景,什么是事务?,简而言之,事务是逻辑上的一组操作,要么都执行,要么都不执行。
下面有一道经典的八股,衡量事务的四大特性的了解程度,理解的背一下就好了。
事务的四大特性(ACID)
- 原子性(Atomicity): ○ 事务中的所有操作要么全部成功,要么全部失败。即使在系统故障的情况下,事务也能保证不会只执行一部分操作。 ○ 例子:银行转账操作中,从一个账户扣钱并在另一个账户加钱,这两步操作要么都成功,要么都失败。
- 一致性(Consistency): ○ 事务执行前后,数据库都必须处于一致的状态。所有事务必须使数据库从一个一致状态变换到另一个一致状态。 ○ 例子:转账后,两个账户的总金额应该保持不变。
- 隔离性(Isolation): ○ 并发事务之间互不影响,一个事务的中间状态对其他事务不可见。不同事务之间的操作是相互独立的。 ○ 例子:同时进行的两个转账操作不会互相干扰,每个操作都看不到对方的中间状态。
- 持久性(Durability): ○ 一旦事务提交,其结果是永久性的,即使系统崩溃,事务的结果也不会丢失。 ○ 例子:转账成功后,系统崩溃重启,账户金额的变动依然存在