久等 | Seata 分布式事务解决方案 1.5 发布
JAVA架构日记
共 2345字,需浏览 5分钟
·
2022-06-01 19:44
一、seata 1.5 新特性
鸽了一年的 seata 1.5 终于发布, 目前 pig 微服务开发框架[1]已经适配 1.5 版本,快来开箱测试。
① 更强能力的Seata 企业版
目前阿里云开发seata企业版已经开放公测,提供Seata全托管和比开源Seata 更强更稳定的内核能力。企业版相比开源版内核 rt 降低 20% 以上,tps 提升 30%,考虑到相比自建的参数调优、依赖组件调优和基础设施等优势,同规格整体性能预计提升约 100%+。同时,企业版解决了高并发场景下的事务处理“毛刺”问题。
② 图形化控制台
在线事务信息
支持 DB、Redis、File 模式
特别注意: 控制台默认端口为 7091
③ 支持 skywalking 事务跟踪
apm-seata-skywalking-plugin-1.5.1.jar[2]
在日志中打印 XID 的同时打印 TraceId ,当出现问题想回溯 XID 相关联的全局链路时,在 SkyWalking 的展示端输入 TraceId 即可,通过 Seata 整体监控融入 SkyWalking ,不仅拥有全链路领域的监控,还在仪表盘、拓扑图、在线剖析和报警都得到了监控。
④ seata-server 配置支持 yaml 配置
如果刚开始接触 seata, 一定对于 seata 的配置文件很懵,自 1.5 后 这些统统都可以通过 application.yml 实现。
二、浅尝一下 seata 分布式事务
① 部署 seata-server
下载 seata-server-1.5.1.zip 并解压
# windows
seata-server.bat -p 8091 -h 127.0.0.1 -m file
# mac or linux
sh seata-server.sh -p 8091 -h 127.0.0.1 -m file
② 添加依赖
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pig-common-seata</artifactId>
</dependency>
③ 服务调用方声明 GlobalTransactional
@GlobalTransactional // 分布式事务注解
@Transactional(rollbackFor = Exception)
public R consumer() {
feign.providerMethod() // 通过feign 调用 服务提供方的接口
}
④ 微服务涉及数据库添加 undo_log 表
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
参考资料
pig 微服务开发框架: https://gitee.com/log4j/pig
[2]apm-seata-skywalking-plugin-1.5.1.jar: https://seata.io/zh-cn/docs/user/apm/skywalking.html
公众号开通微信交流群啦 快来加入
评论