Skip to content

20240413

funkye edited this page Apr 22, 2024 · 10 revisions

会议主持人:@funky-eyes(funky-eyes)

参会人(仅统计PPMC,其他参会人见附录):亦夏,钟正涛,陈健斌,刘月财,江柯,王良,清铭,张嘉伟

下次双周会:


宣讲事项


进行中事项(Doing)

  1. 合规与安全。@刘秋枫 @清铭 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个左右;已经完成大部分工作;后续再逐渐完善
      • 前端漏洞修复完成,其他漏洞任务待认领;
  2. 新seata sample后续工作:

    • 新版的 seata-sample 代码根据文件夹组织,需要添加 workflow(代码目前放在 new-sample 分支上); @王良
    • 处理默认分支剩余漏洞59个漏洞
  3. 百度搜索流量下跌问题(按照apache,不是seata io)。@刘秋枫

    • 官网关键词优化(长期):前两周暂未处理,后面与提升页面体验分一起弄
    • 提升页面体验分;todo(放二期;一期先关注合规;
    • 跳转格式有问题,新域名下的链接手动提交修改,快速迁站流程。url mapping
    • 百度搜索出来的官网的描述,内容优化,当前效果如下三个截图:(优先处理)

  4. 日志优化:(总体进度:20%不到)(@清铭 PR已提交,能满足国际化的要求,打出的堆栈都有对应的errorCode,错误信息里会显示一个链接链到FAQ页面中。)

    • 根据定制的规范对其他的 exception 的格式做改造,待分配任务;
    • seata-go 代码的错误码、日志输出等规范,待分配任务;链接的官方的 FAQ 上;和 seata java 保持一致,等 java 完成再开始;
    • 【TODO】独立日志打印(现在框架和业务日志混在一起)@尹祥琨 todo
    • 规范已经有了,后面再逐渐实施 20240413:
    • saga部分模块已适配新版的exception日志输出
  5. 【TODO】单测覆盖度目标 70% @汪忠祥 牵头 (2/3:前两周暂无进展)

  6. 【TODO later】集测回归能力建设 @张嘉伟 @熊靖浏;

    • summer code e2e集成测试框架,docker compose,待确认(方案阶段)
    • 事后运行集成测试
    • 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)
  7. 兼容性测试(jdk、arch、spring core+boot、druid)@王良;

    • 测试MySQL Driver版本;workflow不同版本兼容性测试;与集测一起看(待集测框架完成)
  8. 性能benchmark @亦夏(整体框架已经搭建)(2/3:暂无进展);

    • 只测框架消耗,sql逻辑
    • 开源压测工具协助,建立基准性
    • 包含图形化 (这个含义待确定)
    • 确定增加新的模块实现;
    • 性能基准问题;
    • poc给大家演示下;@亦夏 下周提交初版代码; 进度更新: 20240413:
    • 基准粒度为方法级,生成图表
    • trace耗时火焰图
    • 压力/吞吐量测试,pts/jmeter,这块比较复杂,需要测试不同事务模式的吞吐量,故优先实现前两种
  9. seata go方向 @月财 20240413:

    • 包名修改后是可以被定期扫描后收录
    • 包名 github.com/seata/seata-go -> seata.apache.org/seata/seata-go -> seata.apache.org/seata-go
  10. 8091端口鉴权:@蒋俊敏

    • TM的request和RM的request的鉴权(PR已提交,待review);健斌已看过代码,基本上已完成,需要拉会进一步确认; 进度: 20240413:
    1. 目前俊敏正在实习找工作中比较忙,该任务暂时没有进展,评估后可暂缓,因为2.1版本还未发布,该功能整合到2.2中

需要讨论事项

  1. resource id + application name唯一标识确认 @陈健斌 优先级较低,暂时没时间(有时间再发起讨论)
    • resource id可能重复,导致下发问题,保证唯一,最终方案暂定,重新拉会议讨论
      • 达梦数据库:schema只能填一个(已向达梦技术人员确认)
    • 下次开会沟通,准备文档;要求可动态扩展;
  2. seata go方向:
    • 生态拓展:B站等等服务框架 @清铭 字节 @hong fan 下周再看做不做 1月底(跟字节的Cloud-We-GO聊了一下,文章两边挂,他们帮review。) 20240413进度:
    1. 洪范目前没时间,暂缓处理
  3. 【TODO】控制台token自动刷新 @刘秋枫 方案完成done (待投票,截止时间周一20231225) 俊敏 下周pr
    • token自动续期方案选型讨论
    • PR待提交(优先TM和RM的鉴权处理) 20240413:
    1. 考虑与控制台账户初始化结合,提高7091端口控制台的安全性为目标的课题
  4. 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以上的虚拟线池一起处理.
  5. 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进度:
    1. 2.2版本再推进
  6. jackson是强依赖 scope-provided 修改成compile依赖(seata 2.2 版本) @亦夏 @海涛
    • 优先级较低:@海涛 @亦夏
    • saga 的 auto type 去除;@亦夏 20240413进度:
    1. 2.2推进,具体方案调研中
  7. 【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的实现
  8. 多线程分支注册回滚顺序错漏(seata 2.2 版本)

老方案:

  • 多线程并发使用seata的问题 · Issue #6311
    • 导致了有数据依赖的分支,回滚顺序错误的问题。 @陈健斌(方案待讨论:性能与一致性问题,需再拉会议讨论)
      • 多线程创建多个分支,且事务决议回滚时,还有分支在注册,导致回滚时读取的branch少一个分支,回滚顺序错乱,回滚事务。
      • 解决方案可合并回滚,比如同一个资源,在一个下发中一次性回滚,这样就可以避免多次下发,且回滚顺序可能不对的问题,下发到本地时完全就可以select for update查询xid对应的undolog,按照本地的时间戳进行回滚。
      • 缺点undolog的datetime精度要准确到纳秒级别

新方案:

  • 同步下发时不进行更改status为rollbackfailed,失败就改为retryrollbacking,在异步中还是遇到脏数据无法回滚时再标记为rollbackfailed
  • 多线程插件标准api去创建并行分支事务

20240413结论:

  • 先行搁置,后续待有相关强烈需求时再做进一步讨论
  1. 【TODO】市面上与Seata相关的文章混乱问题: @zengxiang

  2. 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)进行查询,做聚合处理
      1. 直接把byte[] 拆成多个undolog,最终聚合,解压->反序列化->回滚
      2. 由于拆成多个undolog和进行了压缩,所以无法很好的查看rollbackinfo,可能后续要推出相关工具进行undolog的查看.
      3. parentid采用IdWorker雪花id生成,可能会出现1024台超过后的重复id,但是结合xid基本上不可能出现重复
    • 方案二 遇到该异常,提示建议用户将默认大小调成3倍,64mb*3,因为undolog中的before after image加一块可能是3倍大小
      1. 方案一如果来不及在2.2上合并,那可以考虑用这个方案先提示问题如何处理.
  3. 中科院的开源之夏课题讨论

  4. 注册中心和配置中心及存储(db.redis)接入spring boot actuator,同时现有的actuator/health增加更多的seata属性(比如说正在运行中的全局事物,包含at, tcc, xa, saga的数量,异步任务持有信息显示),最终接入把内容接入到控制台

  5. seata对接rocksdb/map,支持存放动态配置,自闭环注册配置中心一体config.type=raft @江柯

  6. namingserver 7层代理,客户端通过grpc协议直连namingserver,namingserver+proxy打包,也可以拆分调度客户端流量至tc(暂缓)

  7. namingserver seata-server client 三端皆用grpc协议(netty实现,不直接依赖grpc)进行通信 @健斌

  8. open-api 控制台, admin 鉴权+认证,raft leader接口相关成员增删 认证, swagger文档 @清铭

  9. api不强依赖配置文件,client使用api时, 可以传入properties作为优先读取

  10. seata-k8s operator 支持 server db 模式存储,当前的 operator 仅使用 statefulset 实现了 raft 集群部署 server 的管理,对于常用的 db&redis 模式没有做支持,期望通过改造 CRD 和 controller 扩充对 db&redis 模式的支持。(优先交给社区去实现, 调研下dry run机制)

  11. seata-ctl 扩展 server 集群管理能力。当前的 seata-ctl 充当一个 TransOps 的工具,希望后续能做成一个 All-in-one cli tool,比如通过发放 CRD 实现对 k8s seata-server 进行 scale、状态检查、问题排查等功能。(ctrlz, 参考istio ctl) @祥琨

  12. 把现在所有open-api 前端进行对接 namingserver , admin, 配置管理 (暂缓)

20240413进度:

  1. 暂定4月22号前拉会组织相关议题的评审,各位导师请把议题补充详细,1.项目简介 2.产出要求 3.技术要求

20240422进度:

  1. seata对接rocksdb/map,支持存放动态配置,自闭环注册配置中心一体config.type=raft @江柯
  2. namingserver seata-server client 三端皆用grpc协议(netty实现,不直接依赖grpc)进行通信 @健斌
  3. open-api 控制台, admin 鉴权+认证,raft leader接口相关成员增删 认证, swagger文档 @清铭
  4. 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)


其他事项

  1. ApacheCon 7月份在杭州启动议题类别,大家可以报名
    • 4月20号截止

已完成事项(Done)


本次参会人(仅统计PPMC)

附录:其他参会人

Clone this wiki locally