|
| 1 | + |
| 2 | + |
| 3 | +训练营的课程目录里,有我之前的一些课程,在网上大家都可以去看 |
| 4 | + |
| 5 | +亿级流量电商详情页系统 |
| 6 | +elasticsearch从入门到精通 |
| 7 | + |
| 8 | +针对某个技术领域手把手的教学,课程内容量非常的大,代码都是一行一行的写 |
| 9 | + |
| 10 | + |
| 11 | +https://github.com/seata/seata |
| 12 | + |
| 13 | + |
| 14 | +自己安装一个git bash,百度一下如何安装即可,在win上可以执行linux类的命令 |
| 15 | + |
| 16 | +然后自己建一个目录 |
| 17 | + |
| 18 | +git clone https://github.com/seata/seata-samples.git |
| 19 | + |
| 20 | +也可以直接在github页面上下载:https://github.com/seata/seata-samples,建议这种方式,比较快一点,git clone速度太慢了 |
| 21 | + |
| 22 | +就可以把seata所有的示例代码拷贝下来,里面提供的例子就是跟我们说的电商的核心例子是类似的,然后导入到Eclipse中去,这个过程会eclipse会通过maven下载很多的依赖,需要耐心等待 |
| 23 | + |
| 24 | +使用脚本初始化数据库 |
| 25 | + |
| 26 | +``` |
| 27 | +CREATE TABLE `account_tbl` ( |
| 28 | + `id` int(11) NOT NULL AUTO_INCREMENT, |
| 29 | + `user_id` varchar(255) DEFAULT NULL, |
| 30 | + `money` int(11) DEFAULT '0', |
| 31 | + PRIMARY KEY (`id`) |
| 32 | +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| 33 | +
|
| 34 | +CREATE TABLE `storage_tbl` ( |
| 35 | + `id` int(11) NOT NULL AUTO_INCREMENT, |
| 36 | + `commodity_code` varchar(255) DEFAULT NULL, |
| 37 | + `count` int(11) DEFAULT '0', |
| 38 | + PRIMARY KEY (`id`), |
| 39 | + UNIQUE KEY `commodity_code` (`commodity_code`) |
| 40 | +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| 41 | +
|
| 42 | +CREATE TABLE `order_tbl` ( |
| 43 | + `id` int(11) NOT NULL AUTO_INCREMENT, |
| 44 | + `user_id` varchar(255) DEFAULT NULL, |
| 45 | + `commodity_code` varchar(255) DEFAULT NULL, |
| 46 | + `count` int(11) DEFAULT '0', |
| 47 | + `money` int(11) DEFAULT '0', |
| 48 | + PRIMARY KEY (`id`) |
| 49 | +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| 50 | +
|
| 51 | +CREATE TABLE `undo_log` ( |
| 52 | + `id` bigint(20) NOT NULL AUTO_INCREMENT, |
| 53 | + `branch_id` bigint(20) NOT NULL, |
| 54 | + `xid` varchar(100) NOT NULL, |
| 55 | + `context` varchar(128) NOT NULL, |
| 56 | + `rollback_info` longblob NOT NULL, |
| 57 | + `log_status` int(11) NOT NULL, |
| 58 | + `log_created` datetime NOT NULL, |
| 59 | + `log_modified` datetime NOT NULL, |
| 60 | + `ext` varchar(100) DEFAULT NULL, |
| 61 | + PRIMARY KEY (`id`), |
| 62 | + UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) |
| 63 | +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| 64 | +``` |
| 65 | +然后先要下载一个seata-server到本地,在这里下载:https://github.com/seata/seata/releases,然后启动起来,这是分布式事务管理中心,负责维护每一个分布式事务的状态,触发分布式事务的提交和回滚 |
| 66 | + |
| 67 | +seata-server.bat -h 127.0.0.1 -p 8091 -m file |
| 68 | + |
| 69 | +直接把Spring Cloud版本的例子运行起来,观察一下依赖、配置和代码,以后自己在系统里使用直接仿照即可,eureka、account、order、storage、business,依次运行起来,修改一些配置,比如说数据库连接配置 |
| 70 | + |
| 71 | + |
| 72 | +但是任何一个服务报错之后,seata这个分布式事务的框架会感知到,自动触发所有服务之前做的数据库操作全部进行回滚 |
| 73 | + |
| 74 | + |
| 75 | +纯正的tcc框架,很麻烦,需要你手动把各种接口实现出来3个接口,try,confirm,cancel,bytetcc,纯的tcc框架,star |
| 76 | + |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | + |
0 commit comments