Version: Next
业务说明
创建三个微服务
- 订单服务
- 库存服务
- 账户服务
业务逻辑
- 当用户下单时,会在
订单服务
中创建一个订单- 然后通过远程调用
库存服务
来扣减下单商品的库存- 通过远程调用
账户服务
来扣减用户账户里的余额- 在
订单服务
修改订单状态为已完成分析
- 该操作横跨三个数据库,涉及两次远程调用,存在分布式事务问题
案例数据库
三个数据库
seata_order
:存储订单数据库seata_storage
:存储库存的数据库seata_account
:存储账户信息的数据库CREATE DATABASE seata_order;CREATE DATABASE seata_storage;CREATE DATABASE seata_account;创建对应业务表
seata_order
下建t_order
表seata_storage
下建t_storage
表seata_account
下建t_account
表
- t_order
- t_storage
- t_account
USE seata_order;CREATE TABLE t_order(id BIGINT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ,user_id BIGINT(11) DEFAULT NULL COMMENT '用户id',product_id BIGINT(11) DEFAULT NULL COMMENT '产品id',count INT(11) DEFAULT NULL COMMENT '数量',money DECIMAL(11,0) DEFAULT NULL COMMENT '金额',status INT(1) DEFAULT NULL COMMENT '订单状态:0创建中,1已完结')ENGINE=InnoDB AUTO_INCREMENT=7 CHARSET=utf8;创建对应回滚日志表
- 订单、库存、账户
3
个库下都需要建各自的回滚日志表/conf/db_undo_log.sql
为回滚日志表数据库脚本- 在
订单
、库存
、账户
的数据库里都各自建一个回滚日志表
- 据说 1.0.0 版本之后不需要自己建了