-
Notifications
You must be signed in to change notification settings - Fork 8.8k
20240413
会议主持人:@funky-eyes(funky-eyes)
参会人(仅统计PPMC,其他参会人见附录):亦夏,钟正涛,陈健斌,刘月财,江柯,王良,清铭,张嘉伟
下次双周会:
- 时间:2024/4/27。(如有时间变更,再另行通知,请订阅邮件列表:[email protected]、[email protected])
- 主持人:清铭
宣讲事项
进行中事项(Doing)
-
合规与安全。@刘秋枫 @清铭 doing
- logo改造:seata 的 logo 加上 apache 的 logo,继续跟进; @刘秋枫
- 英文博客;从0到1;翻译现有的即可;todo;@汪忠祥 已完成16篇,所有文章的标题占位符已添加,还剩30-40篇 @zengxiang,这两周完成了10多篇;(预计1~1.5个月完成)剩余1/5,继续跟进
- seata sample 剩余59个单独拆分为独立任务处理
-
https://github.com/apache/incubator-seata/discussions/6233 合规相关问题
- 外链:@刘秋枫 @清铭 done
- Apache Logo:Seata的Logo加上Apache元素。@清铭
- 集群中,添加一个节点时,需要校验该节点是否合法:@陈健斌 2.2 推进
- 【TODO】还有2个外链问题;漏洞官网3个,后端还有20个左右;已经完成大部分工作;后续再逐渐完善
- 前端漏洞修复完成,其他漏洞任务待认领;
-
新seata sample后续工作:
- 新版的 seata-sample 代码根据文件夹组织,需要添加 workflow(代码目前放在 new-sample 分支上); @王良
- 处理默认分支剩余漏洞59个漏洞
-
百度搜索流量下跌问题(按照apache,不是seata io)。@刘秋枫
- 官网关键词优化(长期):前两周暂未处理,后面与提升页面体验分一起弄
- 提升页面体验分;todo(放二期;一期先关注合规;
- 跳转格式有问题,新域名下的链接手动提交修改,快速迁站流程。url mapping
-
-
日志优化:(总体进度:20%不到)(@清铭 PR已提交,能满足国际化的要求,打出的堆栈都有对应的errorCode,错误信息里会显示一个链接链到FAQ页面中。)
- 根据定制的规范对其他的 exception 的格式做改造,待分配任务;
- seata-go 代码的错误码、日志输出等规范,待分配任务;链接的官方的 FAQ 上;和 seata java 保持一致,等 java 完成再开始;
- 【TODO】独立日志打印(现在框架和业务日志混在一起)@尹祥琨 todo
- 规范已经有了,后面再逐渐实施 20240413:
- saga部分模块已适配新版的exception日志输出
-
【TODO】单测覆盖度目标 70% @汪忠祥 牵头 (2/3:前两周暂无进展)
- spring autoconfigure写完了(待 merge @张嘉伟)
- 覆盖率计算不准确问题(https://app.codecov.io/gh/apache/incubator-seata/tree/2.x/integration-tx-api%2Fsrc%2Fmain%2Fjava%2Fio%2Fseata%2Fintegration%2Ftx%2Fapi%2Fjson)
- 目标需要完成
- 变更覆盖率需要保持在70%
- 梳理现状模块覆盖率文档,牵头推动 @张嘉伟 @汪忠祥 1.8
- 写单元测试的标准,junit?mock,版本等;@汪忠祥
- 存量治理的最终目的,增量的必须达到什么标准? 进度更新: 20240413:
- 本地已开发部分单侧暂未提交,预计提升5%以内
- 剩余15% 拆分为任务梳理后按难度发布成任务
-
【TODO later】集测回归能力建设 @张嘉伟 @熊靖浏;
- summer code e2e集成测试框架,docker compose,待确认(方案阶段)
- 集测方案/标准先确认下来; @张嘉伟 下次周会来个简版的演示
- PR地址: https://github.com/apache/incubator-seata/pull/6319
- 事后运行集成测试
- redis需要测试版本兼容性
- 已经有方案,已在会后进行演示,待最终确认方案 进度更新: 20240413:
- 演示结果ok,先按照skywalking-e2e编写的方式,按照一个个sample去编写e2e的集成测试,本地测试需要安装go依赖和docker [WIP] feat: add e2e framework support by xjlgod · Pull Request #651 · apache/incubator-seata-samples (github.com)
- summer code e2e集成测试框架,docker compose,待确认(方案阶段)
-
兼容性测试(jdk、arch、spring core+boot、druid)@王良;
- 测试MySQL Driver版本;workflow不同版本兼容性测试;与集测一起看(待集测框架完成)
-
性能benchmark @亦夏(整体框架已经搭建)(2/3:暂无进展);
- 只测框架消耗,sql逻辑
- 开源压测工具协助,建立基准性
- 包含图形化 (这个含义待确定)
- 确定增加新的模块实现;
- 性能基准问题;
- poc给大家演示下;@亦夏 下周提交初版代码; 进度更新: 20240413:
- 基准粒度为方法级,生成图表
- trace耗时火焰图
- 压力/吞吐量测试,pts/jmeter,这块比较复杂,需要测试不同事务模式的吞吐量,故优先实现前两种
-
seata go方向 @月财 20240413:
- 包名修改后是可以被定期扫描后收录
- 包名 github.com/seata/seata-go -> seata.apache.org/seata/seata-go -> seata.apache.org/seata-go
-
8091端口鉴权:@蒋俊敏
- TM的request和RM的request的鉴权(PR已提交,待review);健斌已看过代码,基本上已完成,需要拉会进一步确认; 进度: 20240413:
- 目前俊敏正在实习找工作中比较忙,该任务暂时没有进展,评估后可暂缓,因为2.1版本还未发布,该功能整合到2.2中
需要讨论事项
- resource id + application name唯一标识确认 @陈健斌 优先级较低,暂时没时间(有时间再发起讨论)
- resource id可能重复,导致下发问题,保证唯一,最终方案暂定,重新拉会议讨论
- 达梦数据库:schema只能填一个(已向达梦技术人员确认)
- 下次开会沟通,准备文档;要求可动态扩展;
- resource id可能重复,导致下发问题,保证唯一,最终方案暂定,重新拉会议讨论
- seata go方向:
- 生态拓展:B站等等服务框架 @清铭 字节 @hong fan 下周再看做不做 1月底(跟字节的Cloud-We-GO聊了一下,文章两边挂,他们帮review。) 20240413进度:
- 洪范目前没时间,暂缓处理
- 【TODO】控制台token自动刷新 @刘秋枫 方案完成done (待投票,截止时间周一20231225) 俊敏 下周pr
- token自动续期方案选型讨论
- PR待提交(优先TM和RM的鉴权处理) 20240413:
- 考虑与控制台账户初始化结合,提高7091端口控制台的安全性为目标的课题
- TYPE_SEATA_MERGE 的消息需要独立线程池处理 健斌 todo
- Message independent thread pool for TYPE_SEATA_MERGE · Issue #6197 · apache/incubator-seata (github.com)
- 方案已确定:分成两个线程池,一个NIO线程池,还有一个消息处理线程池。
- PR待2.1完成发版后提交 20240413进度:
- 考虑结合jdk19以上的虚拟线池一起处理.
- RM/proxy init启动先后顺序问题;(seata 2.2 版本) @海涛 @亦夏 1月底开始投入
- TM/RM未init,rm注册,不再忽略,直接异常;TODO,确认 io.seata.core.rpc.netty.RmNettyRemotingClient#registerResource getClientChannelManager().getChannels().isEmpty() 情况下,是否会执行RM注册 @清铭
- 方案已确定,PR已在开发,进度:70% @海涛 ;开发完了,目前在处理冲突;
- 影响的单测比较多,需要再梳理下,下一个版本支持; @亦夏 20240413进度:
- 2.2版本再推进
- jackson是强依赖 scope-provided 修改成compile依赖(seata 2.2 版本) @亦夏 @海涛
- 优先级较低:@海涛 @亦夏
- saga 的 auto type 去除;@亦夏 20240413进度:
- 2.2推进,具体方案调研中
- 【TODO】2.1版本核心同步:(打 * 为重要,必须上)
- saga增强;控制台saga设计器改版; 前端资源带动,任务跟上;
- 并行任务(PR未合并): 2.2合并,包名冲突待解决.
- Saga 去 Spring:done
-
- 老的io.seata的api 兼容;仅剩spi调整io.seata和apache seata实现的优先级(done) 问题记录: 兼容io.seata三方实现的configuration 20240413:
- 优先ioseata加载导致全部优先走了ioseata的实现
- saga增强;控制台saga设计器改版; 前端资源带动,任务跟上;
- 多线程分支注册回滚顺序错漏(seata 2.2 版本)
老方案:
- 多线程并发使用seata的问题 · Issue #6311
- 导致了有数据依赖的分支,回滚顺序错误的问题。 @陈健斌(方案待讨论:性能与一致性问题,需再拉会议讨论)
- 多线程创建多个分支,且事务决议回滚时,还有分支在注册,导致回滚时读取的branch少一个分支,回滚顺序错乱,回滚事务。
- 解决方案可合并回滚,比如同一个资源,在一个下发中一次性回滚,这样就可以避免多次下发,且回滚顺序可能不对的问题,下发到本地时完全就可以select for update查询xid对应的undolog,按照本地的时间戳进行回滚。
- 缺点undolog的datetime精度要准确到纳秒级别
- 导致了有数据依赖的分支,回滚顺序错误的问题。 @陈健斌(方案待讨论:性能与一致性问题,需再拉会议讨论)
新方案:
- 同步下发时不进行更改status为rollbackfailed,失败就改为retryrollbacking,在异步中还是遇到脏数据无法回滚时再标记为rollbackfailed
- 多线程插件标准api去创建并行分支事务
20240413结论:
- 先行搁置,后续待有相关强烈需求时再做进一步讨论
-
【TODO】市面上与Seata相关的文章混乱问题: @zengxiang
- 从入门到放弃文章:https://blog.csdn.net/wnn654321/article/details/116804214 20240413进度:
- 通过云清兄的csdn账户,转载官网博客,扩大官网博客的搜索命中概率
- 后续考虑整一些seata官方的博客号,比如知乎,csdn,博客园,简书等
-
undolog 前后镜像批量插入导致超过64mb 包大小限制 https://github.com/apache/incubator-seata/issues/6451 seata is not compatible with mysql-connector 8.0.22 when using shardingjdbc · Issue #3541 · apache/incubator-seata (github.com)@正涛兄
- 方案一 rollbackinfo里插入一个parentid,然后分成多个undolog,按xid+branch查父undolog,再解析rollbackinfo,如果其中存在parentid,那么就通过xid+branchid(parentid)进行查询,做聚合处理
- 直接把byte[] 拆成多个undolog,最终聚合,解压->反序列化->回滚
- 由于拆成多个undolog和进行了压缩,所以无法很好的查看rollbackinfo,可能后续要推出相关工具进行undolog的查看.
- parentid采用IdWorker雪花id生成,可能会出现1024台超过后的重复id,但是结合xid基本上不可能出现重复
- 方案二 遇到该异常,提示建议用户将默认大小调成3倍,64mb*3,因为undolog中的before after image加一块可能是3倍大小
- 方案一如果来不及在2.2上合并,那可以考虑用这个方案先提示问题如何处理.
- 方案一 rollbackinfo里插入一个parentid,然后分成多个undolog,按xid+branch查父undolog,再解析rollbackinfo,如果其中存在parentid,那么就通过xid+branchid(parentid)进行查询,做聚合处理
-
中科院的开源之夏课题讨论
-
注册中心和配置中心及存储(db.redis)接入spring boot actuator,同时现有的actuator/health增加更多的seata属性(比如说正在运行中的全局事物,包含at, tcc, xa, saga的数量,异步任务持有信息显示),最终接入把内容接入到控制台
-
seata对接rocksdb/map,支持存放动态配置,自闭环注册配置中心一体config.type=raft @江柯
-
namingserver 7层代理,客户端通过grpc协议直连namingserver,namingserver+proxy打包,也可以拆分调度客户端流量至tc(暂缓)
-
namingserver seata-server client 三端皆用grpc协议(netty实现,不直接依赖grpc)进行通信 @健斌
-
open-api 控制台, admin 鉴权+认证,raft leader接口相关成员增删 认证, swagger文档 @清铭
-
api不强依赖配置文件,client使用api时, 可以传入properties作为优先读取
-
seata-k8s operator 支持 server db 模式存储,当前的 operator 仅使用 statefulset 实现了 raft 集群部署 server 的管理,对于常用的 db&redis 模式没有做支持,期望通过改造 CRD 和 controller 扩充对 db&redis 模式的支持。(优先交给社区去实现, 调研下dry run机制)
-
seata-ctl 扩展 server 集群管理能力。当前的 seata-ctl 充当一个 TransOps 的工具,希望后续能做成一个 All-in-one cli tool,比如通过发放 CRD 实现对 k8s seata-server 进行 scale、状态检查、问题排查等功能。(ctrlz, 参考istio ctl) @祥琨
-
把现在所有open-api 前端进行对接 namingserver , admin, 配置管理 (暂缓)
20240413进度:
- 暂定4月22号前拉会组织相关议题的评审,各位导师请把议题补充详细,1.项目简介 2.产出要求 3.技术要求
20240422进度:
- seata对接rocksdb/map,支持存放动态配置,自闭环注册配置中心一体config.type=raft @江柯
- namingserver seata-server client 三端皆用grpc协议(netty实现,不直接依赖grpc)进行通信 @健斌
- open-api 控制台, admin 鉴权+认证,raft leader接口相关成员增删 认证, swagger文档 @清铭
- seata-ctl 扩展 server 集群管理能力。当前的 seata-ctl 充当一个 TransOps 的工具,希望后续能做成一个 All-in-one cli tool,比如通过发放 CRD 实现对 k8s seata-server 进行 scale、状态检查、问题排查等功能。(ctrlz, 参考istio ctl) @祥琨
由于课题数量限制,其余课题考虑放入ccf或其他开源之夏中
Issue 认领
Issue Description Github ID Status
configuration log output · Issue #6191 · apache/incubator-seata (github.com) 按照配置所属的模块做日志输出 王良 pr review
复合主建自增表结构,插入多行数据且未携带主键值时执行异常 · Issue #5043 · apache/incubator-seata (github.com) 限制sql使用,比如要么都没有pk,要么都有pk,不允许批量插入的时候部分有,部分无的情况 为BUG,需处理
seata1.5.2主键中带有逗号导致获取全局锁lock key值错误 · Issue #5136 · apache/incubator-seata (github.com) pk存在逗号,导致竞争锁不准的bug
1. 文档标注
2. 客户端校验包含逗号直接报错
3. 协议版本协商功能
4. 含有逗号的base64处理+特殊标识 俊敏 Done
PR Review
PR Description Reviewer Status
feature: saga remove spring by wt-better · Pull Request #6017 · apache/incubator-seata (github.com) 清铭,健斌,宗杰,王良 done
feature: Saga annotation by leezongjie · Pull Request #5300 · apache/incubator-seata (github.com) 健斌,亦夏,王良,清铭 依赖5399;拉会沟通(seata 2.2 版本) @亦夏(处理包名再review)
Compatible with the SPI 、saga、spring module 健斌,亦夏,王良,清铭 依赖5399;拉会沟通(seata 2.2 版本) @亦夏(处理包名再review)
其他事项
- ApacheCon 7月份在杭州启动议题类别,大家可以报名
- 4月20号截止
已完成事项(Done)
本次参会人(仅统计PPMC)
附录:其他参会人