Skip to content

Commit 89f903d

Browse files
committed
分布式事务
1 parent 4f8f778 commit 89f903d

File tree

5 files changed

+4
-4
lines changed

5 files changed

+4
-4
lines changed

MD/分布式-事务.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
如果你要操作别人的服务的库,你必须是通过**调用别的服务的接口**来实现,绝对不允许交叉访问别人的数据库。
1111

12-
![distributed-transacion-XA](/images/distributed-transaction-XA.png)
12+
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/分布式事务1.png)
1313

1414
### TCC 方案
1515
TCC 的全称是:Try、Confirm、Cancel。
@@ -26,7 +26,7 @@ TCC 的全称是:Try、Confirm、Cancel。
2626

2727
但是说实话,一般尽量别这么搞,自己手写回滚逻辑,或者是补偿逻辑,实在太恶心了,那个业务代码很难维护。
2828

29-
![distributed-transacion-TCC](/images/distributed-transaction-TCC.png)
29+
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/分布式事务2.png)
3030

3131
### 本地消息表
3232
本地消息表其实是国外的 ebay 搞出来的这么一套思想。
@@ -42,7 +42,7 @@ TCC 的全称是:Try、Confirm、Cancel。
4242

4343
这个方案说实话最大的问题就在于**严重依赖于数据库的消息表来管理事务**啥的,会导致如果是高并发场景咋办呢?咋扩展呢?所以一般确实很少用。
4444

45-
![distributed-transaction-local-message-table](/images/distributed-transaction-local-message-table.png)
45+
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/分布式事务3.png)
4646

4747
### 可靠消息最终一致性方案
4848
这个的意思,就是干脆不要用本地的消息表了,直接基于 MQ 来实现事务。比如阿里的 RocketMQ 就支持消息事务。
@@ -56,7 +56,7 @@ TCC 的全称是:Try、Confirm、Cancel。
5656
5. 这个方案里,要是系统 B 的事务失败了咋办?重试咯,自动不断重试直到成功,如果实在是不行,要么就是针对重要的资金类业务进行回滚,比如 B 系统本地回滚后,想办法通知系统 A 也回滚;或者是发送报警由人工来手工回滚和补偿。
5757
6. 这个还是比较合适的,目前国内互联网公司大都是这么玩儿的,要不你举用 RocketMQ 支持的,要不你就自己基于类似 ActiveMQ?RabbitMQ?自己封装一套类似的逻辑出来,总之思路就是这样子的。
5858

59-
![distributed-transaction-reliable-message](/images/distributed-transaction-reliable-message.png)
59+
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/分布式事务4.png)
6060

6161
### 最大努力通知方案
6262
这个方案的大致意思就是:

images/分布式事务1.png

6.18 KB
Loading

images/分布式事务2.png

15.5 KB
Loading

images/分布式事务3.png

31.8 KB
Loading

images/分布式事务4.png

39.9 KB
Loading

0 commit comments

Comments
 (0)