diff --git a/README-cn.md b/README-cn.md
index cc2c53f..66cd490 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -26,15 +26,15 @@ DTM是一款golang开发的分布式事务管理器,解决了跨数据库、
## 亮点
* 极易接入
- - 支持HTTP,提供非常简单的接口,极大降低上手分布式事务的难度,新手也能快速接入
-* 使用简单
- - 开发者不再担心悬挂、空补偿、幂等各类问题,框架层代为处理
+ - 零配置启动服务,提供非常简单的HTTP接口,极大降低上手分布式事务的难度,新手也能快速接入
* 跨语言
- 可适合多语言栈的公司使用。方便go、python、php、nodejs、ruby、c# 各类语言使用。
+* 使用简单
+ - 开发者不再担心悬挂、空补偿、幂等各类问题,首创子事务屏障技术代为处理
* 易部署、易扩展
- - 支持零配置,或依赖mysql|redis,部署简单,易集群化,易水平扩展
+ - 依赖mysql|redis,部署简单,易集群化,易水平扩展
* 多种分布式事务协议支持
- - TCC、SAGA、XA、二阶段消息
+ - TCC、SAGA、XA、二阶段消息,一站式解决所有分布式事务问题
## 与其他框架对比
@@ -109,6 +109,21 @@ go run main.go
+### 失败情况
+在实际的业务中,子事务可能出现失败,例如转入的子账号被冻结导致转账失败。我们对业务代码进行修改,让TransIn的正向操作失败,然后看看结果
+
+``` go
+ app.POST(qsBusiAPI+"/TransIn", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
+ return M{"dtm_result": "FAILURE"}, nil
+ }))
+```
+
+再运行这个例子,整个事务最终失败,时序图如下:
+
+
+
+在转入操作失败的情况下,TransIn和TransOut的补偿操作被执行,保证了最终的余额和转账前是一样的。
+
### 更多示例
参考[dtm-labs/dtm-examples](https://github.com/dtm-labs/dtm-examples)
diff --git a/README.md b/README.md
index cc2c53f..66cd490 100644
--- a/README.md
+++ b/README.md
@@ -26,15 +26,15 @@ DTM是一款golang开发的分布式事务管理器,解决了跨数据库、
## 亮点
* 极易接入
- - 支持HTTP,提供非常简单的接口,极大降低上手分布式事务的难度,新手也能快速接入
-* 使用简单
- - 开发者不再担心悬挂、空补偿、幂等各类问题,框架层代为处理
+ - 零配置启动服务,提供非常简单的HTTP接口,极大降低上手分布式事务的难度,新手也能快速接入
* 跨语言
- 可适合多语言栈的公司使用。方便go、python、php、nodejs、ruby、c# 各类语言使用。
+* 使用简单
+ - 开发者不再担心悬挂、空补偿、幂等各类问题,首创子事务屏障技术代为处理
* 易部署、易扩展
- - 支持零配置,或依赖mysql|redis,部署简单,易集群化,易水平扩展
+ - 依赖mysql|redis,部署简单,易集群化,易水平扩展
* 多种分布式事务协议支持
- - TCC、SAGA、XA、二阶段消息
+ - TCC、SAGA、XA、二阶段消息,一站式解决所有分布式事务问题
## 与其他框架对比
@@ -109,6 +109,21 @@ go run main.go
+### 失败情况
+在实际的业务中,子事务可能出现失败,例如转入的子账号被冻结导致转账失败。我们对业务代码进行修改,让TransIn的正向操作失败,然后看看结果
+
+``` go
+ app.POST(qsBusiAPI+"/TransIn", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
+ return M{"dtm_result": "FAILURE"}, nil
+ }))
+```
+
+再运行这个例子,整个事务最终失败,时序图如下:
+
+
+
+在转入操作失败的情况下,TransIn和TransOut的补偿操作被执行,保证了最终的余额和转账前是一样的。
+
### 更多示例
参考[dtm-labs/dtm-examples](https://github.com/dtm-labs/dtm-examples)
diff --git a/go.mod b/go.mod
index 9c897a0..0d19a2f 100644
--- a/go.mod
+++ b/go.mod
@@ -8,11 +8,10 @@ require (
github.com/dtm-labs/dtmdriver-polaris v0.0.2
github.com/dtm-labs/dtmdriver-protocol1 v0.0.1
github.com/gin-gonic/gin v1.6.3
- github.com/go-playground/assert/v2 v2.0.1
+
github.com/go-redis/redis/v8 v8.11.4
github.com/go-resty/resty/v2 v2.7.0
github.com/go-sql-driver/mysql v1.6.0
- github.com/google/uuid v1.3.0
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/lib/pq v1.10.3
github.com/lithammer/shortuuid v2.0.3+incompatible
@@ -32,7 +31,6 @@ require (
gorm.io/driver/mysql v1.0.3
gorm.io/driver/postgres v1.2.1
gorm.io/gorm v1.22.2
- honnef.co/go/tools v0.0.1-2020.1.3
// gotest.tools v2.2.0+incompatible
)