Skip to content

ch3nnn/dtm-zero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-zero 与 dtm 分布式事务框架集成

一、涉及技术

  1. go-zero
  2. dtm
  3. gorm-gen

二、目录

./
├── README.md
├── deplpy
│      ├── docker-compose.yaml  // docker-compose
│      └── init.sql // 初始化数据库
├── go.mod 
├── go.sum
├── pkg
├── restful  // HTTP
└── service  // RPC
    ├── order  // 订单服务
    └── stock  // 库存服务

三、快速开始

  1. docker-compose 运行 dtm、etcd、mysql

    cd deplpy
    docker-compose up -d
  2. 编译并运行 api、rpc 服务

    • 运行 rpc 服务
     # RPC 订单服务   
     cd service/order
     go run order.go -c etc/order.yaml
     # RPC 库存服务
     cd service/stock
     go run stock.go -c etc/stock.yaml
    • 运行 api 服务
    # HTTP 
    cd restful
    go run order.go -c etc/order.yaml
  3. 测试

    # 创建订单 - ✅成功
    curl --request POST \
      --url http://127.0.0.1:8888/order/create \
      --header 'Accept: */*' \
      --header 'Accept-Encoding: gzip, deflate, br' \
      --header 'Connection: keep-alive' \
      --header 'Content-Type: application/json' \
      --header 'User-Agent: PostmanRuntime-ApipostRuntime/1.1.0' \
      --data '{
        "user_id": 1,
        "goods_id": 1,
        "num": 1
    }'
    # 创建订单 - ❌错误 回滚
    curl --request POST \
      --url http://127.0.0.1:8888/order/create \
      --header 'Accept: */*' \
      --header 'Accept-Encoding: gzip, deflate, br' \
      --header 'Connection: keep-alive' \
      --header 'Content-Type: application/json' \
      --header 'User-Agent: PostmanRuntime-ApipostRuntime/1.1.0' \
      --data '{
        "user_id": 1,
        "goods_id": 1,
        "num": 9999
    }'

四、参考