久等 | 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 分布式事务

PIG中使用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(20NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20NOT NULL,
  `xid` varchar(100NOT NULL,
  `context` varchar(128NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

参考资料

[1]

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

公众号开通微信交流群啦 快来加入


浏览 118
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报