• Seata 1.5.1 重磅发布,支持用户控制台,企业版正式免费公测


    Seata 1.5.1 正式发布。Seata 社区向所有开发者致敬,祝大家有一个愉快的假期。

    用户登记

    欢迎已使用用户在此链接登记,便于我们更好的针对业务场景优化:https://github.com/seata/seata/issues/1246

    发布概览

    主要新增特性:支持用户控制台,支持 Skywalking tracing 集成,支持 bRPC、EDAS Hsf,支持 kotlin 协程,支持 TCC 幂等/空回滚/防悬挂,支持分布式任务调度,支持 Redis 存储 lua 模式,支持 ON DUPLICATE KEY UPDATE 等语法解析。

    此次 release  修改文件数:872,最终代码变动:+60830,-9435 ,参与代码 commit 人数:60+,合并pr数:230,其中:feature:30+,bugfix:60+,优化重构测试及其他:100+。

    https://github.com/seata/seata/milestone/15

    此版本是目前参与代码提交人数最多和合并pr最多的版本,感谢大家的贡献。

    控制台预览:

    1.png

    SkyWalking:

    2.png

    非常感谢 @SkyWalking 社区的大力支持。

    版本的主要更新

    feature:

    • [#4115] 支持用户控制台
    • [#3652] 支持 APM SkyWalking 集成
    • [#3472] 添加 redisLocker 的 lua 模式
    • [#3575] 支持对锁和会话不同存储的混合使用
    • [#3009] 支持 server 端以 springboot  的方式的启动
    • [#3374] 支持 MySQL INSERT ON DUPLICATE KEY UPDATE
    • [#3642] TCC 模式支持使用 API 的形式进行二阶段参数传递
    • [#3064] 支持可配置 GlobalTransactionInterceptor 和 TccActionInterceptor 的 order 值
    • [#2852] 支持自定义 GlobalTransactionScanner 的扫描对象。
    • [#3683] 支持 Redis 分布式锁来避免多 TC 竞争执行任务
    • [#3545] TCC 模式支持幂等控制、防悬挂和空回滚
    • [#3823] TCC 模式二阶段方法参数列表支持自定义
    • [#3642] TCC 模式一阶段支持 BusinessActionContext 隐式传递
    • [#3856] 支持 Edas-Hsf RPC 框架
    • [#3869] 支持从环境 ENV 获取配置
    • [#2568] 支持 GlobalTransactionInterceptor 配置切面表达式
    • [#3886] 支持注册中心注册 ip 的网络偏好设置
    • [#3906] 支持 SPI 卸载
    • [#3668] 支持 kotlin 协程
    • [#3968] 支持 bRPC-java RPC框架
    • [#4268] 增加控制台 Global Session页面File模式实现
    • [#4281] 增加控制台 Global Session页面和Global LockRedis模式实现
    • [#4293] 增加控制台 Global Lock页面File模式实现
    • [#4335] 实现配置中心上传配置交互脚本(nacos,etcd3)
    • [#4360] 实现配置中心上传配置交互脚本(apollo,consul,zk)
    • [#4320] 实现控制台db模式全局事务、锁查询接口
    • [#4435] 控制台前端页面实现
    • [#4480] 实现 DefaultAuthSigner 的默认签名加密方法
    • [#3487] 增加分布式锁的 DB 实现
    • [#3951] 支持 zstd 压缩
    • [#2838] Saga 支持 springboot 项目的自动配置

    bugfix:

    • [#3497] 修复 TCC 模式并发量较大时线程池导致的超时问题
    • [#3686] 修复 Apollo 集群配置项错误及NPE错误
    • [#3716] 修复 findTargetClass 方法的错误
    • [#3773] 修复 consul 注册中心在自定义集群名下无法获取 TC 集群
    • [#3695] 修复 mariadb 无法创建XA连接的问题
    • [#3783] 修复 store mode 不生效问题
    • [#3740] 修复在某些情况下,当Saga事务结束时 LocalThread 未被清除的问题
    • [#3792] 修复 Server 无法获取 Redis host的问题
    • [#3828] 修复 StringUtils 抛出 StackOverflowError 的问题
    • [#3817] 修复 TC 在SkyWalking拓扑图节点不汇聚的问题
    • [#3803] 修复 ReflectionUtil 抛出不预期异常问题
    • [#3879] 修复 PosrgreSQL多schema无法找到channel问题
    • [#3881] 修复不存在的相同 DataId 不同默认值返回相同值的问题
    • [#3897] 修复 FastjsonUndoLogParser 中 localdatatime类型不能回滚的问题
    • [#3901] 修复 seataio/seata-server 镜像中 servlet-api 冲突无法启动问题
    • [#3931] 修复 线程池拒绝执行情况下,dump内存文件名和路径错误的问题
    • [#3949] 修复 nacos-config.py 空白选项的问题和内容丢失的问题
    • [#3988] 修复 nacos 的密码带有特殊字符导致用户名不存在问题
    • [#3978] 修复 future timeout 引发的 NPE 问题
    • [#3998] 修复 jedis multi.exec 的 NPE 问题
    • [#4011] 修复 springboot下无法获取distributed-lock-table配置
    • [#4023] 修复 dubbo部分场景存在xid未清除的问题
    • [#4032] 修复 server端的ShutdownHook在资源释放时,ApplicationContext已关闭的问题
    • [#4039] 修复本地事务抛出异常后 RM 没有清除xid问题
    • [#4074] 修复 XA 模式资源悬挂问题
    • [#4107] 修复项目构建时的死锁问题
    • [#4158] 修复 logback 无法加载到 RPC_PORT 的问题
    • [#4162] 修复  Redis 注册中心内置配置名导致启动报错问题
    • [#4165] 修复 StringUtils.toString(obj) 当obj是基本数据数组时,抛出ClassCastException的问题
    • [#4169] 修复 XA 模式originalConnection已关闭,导致二阶段无法执行
    • [#4177] 修复当事务超时且TM发起commit决议时,意外造成全局锁释放的问题
    • [#4174] 修复删除 undolog 时连接关闭问题
    • [#4189] 修复 kafka-appender.xml 和 logstash-appender.xml 配置文件表达式中的默认值问题。
    • [#4213] 修复部分"sessionMode"代码未执行导致启动失败问题
    • [#4220] 修复 zstd-compressor 模块未合并到 seata-all 中的问题
    • [#4222] 修复字段列表为空时,插入语句无法回滚的问题
    • [#4253] 修复 UpdateExecutor只存储set 字段问题
    • [#4233] 修复 lock 和 branch 数据残留问题
    • [#4278] 修复 MySQL 的Blob/Clob/NClob数据类型无法反序列化的问题
    • [#4302] 修复 ORM 可能存在获取不到自增主键值的问题
    • [#4308] 修复PostgreSQL多个schema下存在相同表的TableMetaCache解析问题
    • [#4326] 修复使用 MariaDB 驱动程序时无法构建 Executor 的问题
    • [#4355] 修复使用 MySQL Loadbalance模式resourceId被误判为resourceIds的问题
    • [#4310] 修复通过 SELECT LAST_INSERT_ID 获取数据库自增id失败的问题
    • [#4331] 修复使用 ONLY_CARE_UPDATE_COLUMNS 配置可能出现的脏写校验异常
    • [#4408] 修复容器环境中设置环境变量无效的问题
    • [#4441] 修复Redis 存储模式下查询时未关闭 Pipeline 和分支注册后添加分支session时branchSessions为null的问题
    • [#4438] 修复 file 模式下 GlobalSession 在延迟删除的情况下无法被正常删除的问题
    • [#4432] 修复 ServerApplicationListener无法读取配置中心配置的问题
    • [#4452] 修复 service.disableGlobalTransaction 配置的日志输出错误
    • [#4449] 修复 Redis 分页查询 NPE 问题,优化readession限制查询条数后均衡返回结果
    • [#4459] 修复 Oracle 和 PostgreSQL 数据库生成前后镜像失败的问题
    • [#4471] 修复运行时切换事务分组对应集群引起的错误
    • [#4474] 修复 MySQL 多位Bit类型字段回滚错误
    • [#4492] 修复 eureka 注册中心无法动态更新服务列表的问题
    • [#4228] 修复 TC 获取不同 ip 的 RM 连接导致的xa模式资源悬挂问题
    • [#4561] 修复 allSessions/findGlobalSessions 某些情况下返回null 的问题
    • [#4505] 修复 time类型的fastjson序列化问题
    • [#4579] 修复 MySQLInsertOrUpdateExecutor的prepareUndoLogAll
    • [#4005] 修复 PK 约束名称与属于PK的唯一索引名称不同
    • [#4062] 修复 Saga 复杂参数序列化问题
    • [#4199] 修复 RPC TM 请求超时问题
    • [#4352] 修复 SQL 解析器的一些问题
    • [#3687] 修复某些场景下无法重试全局锁的问题

    optimize/test:

    • [#3700] 优化buildLockKey方法的效率
    • [#3615] 优化二阶段同步提交时全局事务记录可异步删除
    • [#3689] 修正script/server/config/file.properties中属性编写错误
    • [#3588] 优化数据源自动代理的流程
    • [#3528] 优化Redis存储模式内存占用
    • [#3626] 移除重复的changeStatus代码
    • [#3722] 添加分布式锁的代码
    • [#3713] 统一enableClientBatchSendRequest的默认值
    • [#3120] 优化Configuration的部分代码,并添加单元测试
    • [#3735] 当TC只有单个节点时,不进行非必要的负载均衡操作
    • [#3770] 关闭一些未关闭的对象
    • [#3627] 使用TreeMap替换 TableMeta 中的 LinkedHashMap 以兼容高版本的MySQL
    • [#3760] 优化seata-server的logback相关的配置
    • [#3765] 将添加配置类的操作从AutoConfiguration转移到EnvironmentPostProcessor中并提升该操作的优先级
    • [#3730] 重构TCC模式相关的代码
    • [#3820] 在表tcc_fence_log中新增字段action_name
    • [#3738] JacksonUndoLogParser支持解析LocalDateTime(支持微秒时间)
    • [#3794] 优化seata-server的打包配置,修正Dockerfile的错误配置,并将Dockerfile也打包进去
    • [#3795] 优化zkRegistrylookup方法性能
    • [#3840] 优化apm-skwalking操作方法生成规则
    • [#3834] 优化seata-distribution增加apm-seata-skywalking包
    • [#3847] 优化ConcurrentHashMap.newKeySet替换ConcurrentSet
    • [#3849] 优化字符串拼接
    • [#3890] 优化insert后镜像仅查询插入字段
    • [#3895] 优化解码异常
    • [#3212] 优化解析OrderBy,Limit条件代码结构
    • [#3898] 增加docker maven 插件
    • [#3904] 增强 metrics 和修复 seata-server 单测不运行的问题
    • [#3905] 优化 nacos-config.sh 支持 ash
    • [#3935] 优化以Redis为注册中心时,发送多条命令使用pipeline
    • [#3916] 优化注册中心服务节点列表地址探活
    • [#3918] 缓存Field和Method的反射结果
    • [#3311] 支持从consul单一key中读取所有配置
    • [#3907] 优化设置 Server 端口
    • [#3912] 支持通过env配置JVM参数
    • [#3939] 使用map优化大量的判断代码
    • [#3955] 添加启动banner
    • [#4266] 修改由于修改记录过多导致分支注册及lock释放失败的问题
    • [#3949] nacos-config.py 支持默认参数和选择性输入参数
    • [#3954] 移除对druid依赖中过期方法的调用
    • [#3981] 优化服务端口的优先级设置
    • [#4013] 优化可用TC地址检测
    • [#3982] 优化 readme 文档和升级POM依赖
    • [#3991] 关闭SpringBoot下无用的fileListener
    • [#3994] 优化tcc_fence_log表定时删除任务的机制
    • [#3327] 支持从etcd3单一key中读取所有配置
    • [#4001] 支持从Nacos,Zookeeper,Consul,Etcd3 中读取 yml
    • [#4017] 优化文件配置
    • [#4018] 优化 Apollo 配置
    • [#4021] 优化 Nacos、Consul、Zookeeper、Etcd3 配置
    • [#4055] 优化NetUtil的getLocalAddress0方法
    • [#4086] 分支事务支持懒加载并优化任务调度
    • [#4056] 优化 DurationUtil
    • [#4103] 减少分支事务注册无需竞争锁时的内存占用
    • [#3733] 优化本地事务下的锁竞争机制
    • [#4144] 支持默认的事务分组配置
    • [#4157] 优化客户端批量发送请求
    • [#4191] RPC 请求超时时间支持配置化
    • [#4216] 非 AT 模式无须清理undolog表
    • [#4176] 优化 Redis 注册中心存储,改用自动过期key替代hash.
    • [#4196] TC 批量响应客户端
    • [#4212] 控制台接口合并优化
    • [#4237] 当所有的 before image均为空的时候,跳过 checkLock 的步骤
    • [#4251] 优化部分代码处理
    • [#4262] 优化 TCC 模块代码处理
    • [#4235] 优化 eureka 注册中心保存实例信息
    • [#4277] 优化 Redis-pipeline模式本地事务下的锁竞争机制
    • [#4284] 支持 MSE-Nacos 的 ak/sk 鉴权方式
    • [#4299] 优化异常提示
    • [#4300] 优化NettyRemotingServer的close()
    • [#4270] 提高全局提交和全局回滚的性能,分支事务清理异步化
    • [#4307] 优化在 TCC 模式减少不必要的全局锁删除
    • [#4303] tcc_fence_log表悬挂日志记录异步删除
    • [#4328] 配置上传脚本支持注释
    • [#4305] 优化 TC 端全局锁获取失败时的日志打印
    • [#4336] 添加 AT 模式不支持的SQL语句异常提示
    • [#4359] 支持配置元数据读取环境变量
    • [#4353] seata-all.jar 瘦身。
    • [#4393] Redis & DB 模式下启动不需要reload
    • [#4247] 在github actions上,添加基于 java17 和 springboot 各版本的测试
    • [#4400] 异步二阶段任务支持并行处理提升效率
    • [#4391] commit/rollback 重试超时事件
    • [#4282] 优化回滚镜像构建逻辑
    • [#4276] 修复 seata-test 单测不运行的问题
    • [#4407] file模式下无需延迟删除globasession
    • [#4436] 优化file模式下的global session查询接口
    • [#4431] 优化Redis模式查询globalSession限制查询条数
    • [#4465] 优化TC 批量响应客户端模式客户端版本传输方式
    • [#4469] 优化控制台db模式下获取配置的方式
    • [#4478] 优化 Nacos 配置和注册元数据属性
    • [#4522] 优化 GC 参数
    • [#4517] 增强失败/超时状态的监控
    • [#4451] fileSessionManager改为单例并优化任务线程池处理
    • [#4551] 优化 metrics rt 统计问题
    • [#4574] 支持 accessKey/secretKey 配置自动注入
    • [#4583] DefaultAuthSigner 的默认签名加密方法替换为HmacSHA256
    • [#4591] 优化开关默认值
    • [#3780] 升级 Druid 版本
    • [#3797] 支持在Try 方法外由用户自己实例化BusinessActionContext
    • [#3909] 优化collectRowLocks 方法
    • [#3763] 优化 github actions
    • [#4345] 修正包目录名
    • [#4346] 优化服务器日志并移除lombok
    • [#4348] 统一管理maven插件及其版本
    • [#4354] 优化saga测试用例
    • [#4227] 统一管理依赖的版本,并且升级spring-boot到2.4.13
    • [#4453] 升级 eureka-clients 和 xstream 的版本
    • [#4481] 优化nacos配置和命名属性
    • [#4477] 优化调试级别日志并修复拼写错误
    • [#4484] 优化TM/RM注册时TC的日志打印
    • [#4458] 修复 metrices 模块 README.md 的配置遗漏问题
    • [#4482] [#3654] 修复typos
    • [#3880] 贡献文档增加中文版本
    • [#4134] 初始化控制台基础代码
    • [#3870] 让seata-bom成为真正的Bill-Of-Material
    • [#3889] 支持注册中心添加心跳
    • [#3702] 修改注释
    • [#4608] [#3110]修复测试用例
    • [#4163] 完善开发者奉献文档
    • [#3678] 补充遗漏的配置及新版本pr登记md文件
    • [#4449] 优化 Redis limit 并修复 Redis 分页问题
    • [#4535] 修复 FileSessionManagerTest单测错误
    • [#4025] 优化潜在的数据库资源泄露

    英文版: https://github.com/seata/seata/releases/tag/v1.5.1

    致谢

    非常感谢以下 contributors 的代码贡献。若有无意遗漏,请报告。

    • slievrly
    • wangliang181230
    • a364176773
    • lvekee
    • caohdgege
    • lightClouds917
    • objcoding
    • siyu
    • GoodBoyCoder
    • pengten
    • Bughue
    • doubleDimple
    • zhaoyuguang
    • liuqiufeng
    • jsbxyyx
    • lcmvs
    • onlinechild
    • xjlgod
    • h-zhi
    • tanzzj
    • miaoxueyu
    • selfishlover
    • tuwenlin
    • dmego
    • xiaochangbai
    • Rubbernecker
    • ruanun
    • huan415
    • drgnchan
    • cmonkey
    • 13414850431
    • ls9527
    • xingfudeshi
    • spilledyear
    • kaka2code
    • iqinning
    • yujianfei1986
    • elrond-g
    • jameslcj
    • zhouchuhang
    • xujj
    • mengxzh
    • portman
    • anselleeyy
    • wangyuewen
    • imherewait
    • wfnuser
    • zhixing

    同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。

    Seata 企业版

    Seata 企业版提供免运维,高性能的企业级分布式事务解决方案,100%兼容开源,相比开源自建优势巨大。目前已在阿里云北京区域上线公测。欢迎大家在微服务引擎 MSE 控制台-分布式事务,免费开通。

    3.jpeg

    步骤一:创建 Seata 实例

    4.png

    步骤二:创建事务分组

    5.png

    目前 Seata 企业版不能在非阿里云环境下直连,如遇本地开发调试可安装 CloudToolkit 插件,启用 “端云互联” 功能进行网络连通,详细介绍参照分布式事务服务开通文档。

    社区讨论群

    6.png

    常用链接

    投稿

    欢迎大家将 Seata 相关的实践文章投稿至:slievrly@gmail.com

  • 相关阅读:
    Eureka集群----SpringCloud 微服务
    Eureka----SpringCloud 微服务
    SpringCloud 微服务
    yml在线格式转换工具(properties)
    Spring与Mybatis三种整合方法
    Spring缓存注解@CachePut , @CacheEvict,@CacheConfig使用
    Spring事务配置的五种方式
    Spring -- <tx:annotation-driven>注解基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)的区别。
    Spring -- <context:component-scan>使用说明
    web.xml执行顺序
  • 原文地址:https://www.cnblogs.com/alisystemsoftware/p/16327914.html
Copyright © 2020-2023  润新知