diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..45af986 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM daocloud.io/golang:1.15 +WORKDIR /app/dtm +COPY . . +RUN go build app/main.go +EXPOSE 8080 +CMD [ "/app/dtm/main", "dtmsvr" ] diff --git a/dtmsvr/dtmsvr.sql b/dtmsvr/dtmsvr.sql new file mode 100644 index 0000000..cc0fbed --- /dev/null +++ b/dtmsvr/dtmsvr.sql @@ -0,0 +1,51 @@ +CREATE DATABASE `dtm` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; + +drop table IF EXISTS saga; +CREATE TABLE `saga` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `gid` varchar(45) NOT NULL COMMENT '事务全局id', + `steps` json NOT NULL COMMENT 'saga的所有步骤', + `status` varchar(45) NOT NULL COMMENT '全局事务的状态 prepared | processing | finished | rollbacked', + `trans_query` varchar(128) NOT NULL COMMENT '事务未决状态的查询api', + `finish_time` datetime DEFAULT NULL, + `rollback_time` datetime DEFAULT NULL, + `create_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `gid` (`gid`), + KEY `create_time` (`create_time`), + KEY `update_time` (`update_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +drop table IF EXISTS saga_step; +CREATE TABLE `saga_step` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `gid` varchar(45) NOT NULL COMMENT '事务全局id', + `data` json DEFAULT NULL COMMENT '请求所携带的数据', + `step` int(11) NOT NULL COMMENT '处于saga中的第几步', + `url` varchar(128) NOT NULL COMMENT '动作关联的url', + `type` varchar(45) NOT NULL COMMENT 'saga的所有步骤', + `status` varchar(45) NOT NULL COMMENT '步骤的状态 pending | finished | rollbacked', + `finish_time` datetime DEFAULT NULL, + `rollback_time` datetime DEFAULT NULL, + `create_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `gid` (`gid`,`step`), + KEY `create_time` (`create_time`), + KEY `update_time` (`update_time`) +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4; + +drop table IF EXISTS trans_log; +CREATE TABLE `trans_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `gid` varchar(45) NOT NULL COMMENT '事务全局id', + `step` int(11) DEFAULT NULL COMMENT 'saga的步骤', + `action` varchar(45) DEFAULT NULL COMMENT '行为', + `status` varchar(45) NOT NULL COMMENT '状态', + `detail` json NOT NULL COMMENT '行为之后的status', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `gid` (`gid`), + KEY `create_time` (`create_time`) +) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4;