Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
advanced-java
提交
e23f8cd7
A
advanced-java
项目概览
晶之木
/
advanced-java
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
advanced-java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e23f8cd7
编写于
4月 19, 2019
作者:
Y
yanglbme
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs(distributed-system): update distributed-transaction.md
上级
3ae970ef
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
3 deletion
+3
-3
docs/distributed-system/distributed-transaction.md
docs/distributed-system/distributed-transaction.md
+3
-3
未找到文件。
docs/distributed-system/distributed-transaction.md
浏览文件 @
e23f8cd7
...
...
@@ -29,7 +29,7 @@
![
distributed-transacion-XA
](
/images/distributed-transaction-XA.png
)
### TCC 方案
TCC 的全称是:
Try、Confirm、Cancel
。
TCC 的全称是:
`Try`
、
`Confirm`
、
`Cancel`
。
-
Try 阶段:这个阶段说的是对各个服务的资源做检测以及对资源进行
**锁定或者预留**
。
-
Confirm 阶段:这个阶段说的是在各个服务中
**执行实际的操作**
。
...
...
@@ -41,7 +41,7 @@ TCC 的全称是:Try、Confirm、Cancel。
而且最好是你的各个业务执行的时间都比较短。
但是说实话,一般尽量别这么搞,自己手写回滚逻辑,或者是补偿逻辑,实在太恶心了,那个业务代码
很难维护
。
但是说实话,一般尽量别这么搞,自己手写回滚逻辑,或者是补偿逻辑,实在太恶心了,那个业务代码
是很难维护的
。
![
distributed-transacion-TCC
](
/images/distributed-transaction-TCC.png
)
...
...
@@ -57,7 +57,7 @@ TCC 的全称是:Try、Confirm、Cancel。
5.
如果 B 系统处理失败了,那么就不会更新消息表状态,那么此时 A 系统会定时扫描自己的消息表,如果有未处理的消息,会再次发送到 MQ 中去,让 B 再次处理;
6.
这个方案保证了最终一致性,哪怕 B 事务失败了,但是 A 会不断重发消息,直到 B 那边成功为止。
这个方案说实话最大的问题就在于
**严重依赖于数据库的消息表来管理事务**
啥的,
会导致
如果是高并发场景咋办呢?咋扩展呢?所以一般确实很少用。
这个方案说实话最大的问题就在于
**严重依赖于数据库的消息表来管理事务**
啥的,如果是高并发场景咋办呢?咋扩展呢?所以一般确实很少用。
![
distributed-transaction-local-message-table
](
/images/distributed-transaction-local-message-table.png
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录