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 版本之后不需要自己建了
![]()