Browse Source

update readme

pull/141/head
yedf2 4 years ago
parent
commit
0878e8f114
  1. 25
      README-cn.md
  2. 25
      README.md
  3. 4
      go.mod

25
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
<img src="https://pic3.zhimg.com/80/v2-b7d98659093c399e182a0173a8e549ca_1440w.jpg" height=428 />
### 失败情况
在实际的业务中,子事务可能出现失败,例如转入的子账号被冻结导致转账失败。我们对业务代码进行修改,让TransIn的正向操作失败,然后看看结果
``` go
app.POST(qsBusiAPI+"/TransIn", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "FAILURE"}, nil
}))
```
再运行这个例子,整个事务最终失败,时序图如下:
![saga_rollback](https://pic3.zhimg.com/80/v2-8d8f1476be8a1e2e09ce97a89b4116c2_1440w.jpg)
在转入操作失败的情况下,TransIn和TransOut的补偿操作被执行,保证了最终的余额和转账前是一样的。
### 更多示例
参考[dtm-labs/dtm-examples](https://github.com/dtm-labs/dtm-examples)

25
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
<img src="https://pic3.zhimg.com/80/v2-b7d98659093c399e182a0173a8e549ca_1440w.jpg" height=428 />
### 失败情况
在实际的业务中,子事务可能出现失败,例如转入的子账号被冻结导致转账失败。我们对业务代码进行修改,让TransIn的正向操作失败,然后看看结果
``` go
app.POST(qsBusiAPI+"/TransIn", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "FAILURE"}, nil
}))
```
再运行这个例子,整个事务最终失败,时序图如下:
![saga_rollback](https://pic3.zhimg.com/80/v2-8d8f1476be8a1e2e09ce97a89b4116c2_1440w.jpg)
在转入操作失败的情况下,TransIn和TransOut的补偿操作被执行,保证了最终的余额和转账前是一样的。
### 更多示例
参考[dtm-labs/dtm-examples](https://github.com/dtm-labs/dtm-examples)

4
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
)

Loading…
Cancel
Save